La Web del Programador: Comunidad de Programadores
 
    Pregunta:  19798 - BORRAR REGISTROS DE UNA TABLA QUE NO SE ENCUENTRAN EN OTRA
Autor:  Eduardo Garcia
Hola Amigos:
Mi problema es sencillo y en ningún manual de SQL encuentro respuesta.
Quiero borrar de una tabla TABLA1.DBF los registros que no se encuentren en otra tabla TABLA2.DBF.
Puedo hacer consultas a traves de JOIN que me devuelven los registros a borrar, pero no logro hacer lo mismo para su eliminación.
Vale aclarar que los comandos SQL los estoy tirando desde un TQUERY de DELPHI y las tablas fueron creadas con FOXPRO.
Desde ya, muchas gracias.

  Respuesta:  claudia hernandez
NO SE SI YA PROBASTE ESTO:

PRIMERO AL OBJETO QUERY LE TIENES QUE PONER EN LA PROPIEDAD REQUESTLIVE:=TRUE
LUEGO PONES ESTA INSTRUCCION EN EL SQL DEL QUEY

DELETE FROM TABLA1
WHERE TABLA1.CAMPO NOT IN ( SELECT CAMPO FROM TABLA2)

SE SUPONE QUE "CAMPO" ES EL CAMPO A TRAVEZ DEL CUAL VAS A RELACIONAR AMBAS TABLAS POR EJEMPLO:

DELETE FROM PEDIDOS
WHERE CLIENTE NOT IN ( SELECT CVE_CLIENTE FROM CLIENTES)

BORRA DE LA TABLA PEDIDOS TODOS LOS REGISTROS DONDE LA CLAVE DE CLIENTE NO SE EXISTA EN LA TABLA CLIENTES

SE SUPONE QUE EN LA TABLA PEDIDOS HAY UN CAMPO QUE SE LLAMA CLIENTE Y EN LA TABLA CLIENTES HAY UN CAMPO QUE SE LLAMA CVE_CLIENTE Y AMBOS CONTIENEN UNA CLAVE DE UN CLIENTE.
ESPERO QUE NO TE HAYA HECHO BOLAS CON LA EXPLICACION
NO ES MUYT DIFICIL.
HASTA LA VISTA. CUALQUIER COSA PUEDES ESCRIBIRME A MI CORREO.