¿Sabes una manera eficiente de borrar los registros que he filtrado anteriormente?

Hola expertos, ¿podrían por favor ayudarme? Tengo una tabla que guarda datos de facturación de los clientes y necesito filtrarla para hacer un sorteo con la gente que este al día, es decir necesito verificar que todas las cuotas se hayan pagado, ya que si una no esta al día, el usuario automáticamente queda afuera, el problema es que no encuentro una manera eficiente para borrar los registros, por ejemplo uno de los filtros es por fecha de cobro, si esta vacía, significa que no pago, por lo tanto debo eliminar todos los registros de este usuario(datan desde marzo de 2008, es decir, ¿son muchos registros por cliente) que sentencia puedo utilizar para borrarlos de una manera Rápida y eficiente? Gracias!

1 respuesta

Respuesta
1
Tienes una tabla facturación ahora crea una tabla sorteos la cual este sincronizada con facturación a través de la fecha de pago por ejemplo quienes deberían pagar hoy
cuando consultes y te aparezca vacío eliminas de la tabla sorteo los registros que no clasifican
dele from sorteo where NoFactura = valor
y así los registros que te queden activos en la tabla sorteos son los cumplieron con el pago
Justamente con sql estoy intentando pero el problema es que no funciona, le pocngo un select de los que tienen fecha vacia y los pongo en un cursor, luego al original le intento borrar todos los agentes que estan en el primer cursor, entiendes? pero no funciona
esta seria la primera sentencia
SELECT poblacion,abonado,fec_cobro from sinfiltrar WHERE (EMPTY(fec_cobro)) INTO CURSOR sinfiltrar1 READWRITE
para borrarlos esta
DELETE FROM sinfiltrar WHERE (sinfiltrar.poblacion=sinfiltrar1.poblacion) AND (sinfiltrar.abonado=sinfiltrar1.abonado)
y no funciona, luego intenté con esta
select sinfiltrar1
SCAN
ncodigo=abonado
npob=poblacion
DELETE FROM sinfiltrar where (sinfiltrar.abonado=ncodigo) AND (sinfiltrar.poblacion=npob)
SELECT sinfiltrar1
Endscan
Pero demora muchísimo! Tanto que ni se si funciona
la idea es borrar todos los registros del agente que tenga al menos una fecha impaga, los registros datan desde el 2008 y la tabla tiene unos 400000 registros en total, agradecería muchísimo si puedes ayudarme!
Saludos!
en la sentencia     DELETE FROM sinfiltrar WHERE (sinfiltrar.poblacion=sinfiltrar1.poblacion) AND (sinfiltrar.abonado=sinfiltrar1.abonado)   estas utilizando sinfiltrar.abonado.  estas haciendo doble referencia trata quitanto sinfiltrado.abonado y en su lugar solo digita el nombre del campo abonado la sentencia debe quedar asi:
DELETE FROM sinfiltrar WHERE (poblacion=sinfiltrar1.poblacion) AND (abonado=sinfiltrar1.abonado)  y antes de este codigo selecciona el cursor sinfiltrar1 asi:
select sinfiltrar1
DELETE FROM sinfiltrar WHERE (poblacion=sinfiltrar1.poblacion) AND (abonado=sinfiltrar1.abonado)
Si no te funciona intenta guardar el cursor sinfiltrar1 en una tabla(sinFilter) y después aplica el código delete a la tabla sinFilter
si te da problemas me podes enviar el código a mi email y con gusto trato de ayudarte
atentamente
Antonio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas