Como eliminar un registro de una tabla siempre y cuando no exista en otra con el mismo campo

1,661 views
Skip to first unread message

victor velazquez

unread,
Sep 2, 2011, 12:09:11 PM9/2/11
to Comunidad de Visual Foxpro en Español
Hola foxeros. estoy liando con sql y me tope con esta incognita:

deseo eliminar el registro de una tabla, pero siempre y cuando que
este dato no exista en otra tabla (si existe pues que no elimine el
registro especificado)

tengo esto pero me elimina todos los coincidentes

DELETE FROM asocia WHERE NOT EXISTS (SELECT A.ID_ASOCIACION FROM
PADRON as A WHERE A.ID_ASOCIACION='PROMOTORAS')

como seria la sintaxis.. saludos..

Walter R. Ojeda Valiente

unread,
Sep 2, 2011, 12:40:54 PM9/2/11
to publice...@googlegroups.com
Hola Viktor

Para evitar eso debes relacionar ambas tablas mediante una clave foránea. Y decirle que en caso de borrado utilice el comportamiento por defecto. El cual impide que se borre una fila si su campo clave está siendo usado en la otra tabla.

Saludos.

Walter.

Y por supuesto, aún sin novedades del imaginario dios de "extremo".



> Date: Fri, 2 Sep 2011 09:09:11 -0700
> Subject: [vfp] Como eliminar un registro de una tabla siempre y cuando no exista en otra con el mismo campo
> From: viv...@gmail.com
> To: publice...@googlegroups.com

Wladimir Carrillo

unread,
Sep 2, 2011, 12:47:29 PM9/2/11
to publice...@googlegroups.com

Tu consulta esta algo raro o no entendí bien

 

Esta consulta  SELECT ID_ASOCIACION FROM PADRON WHERE ID_ASOCIACION='PROMOTORAS' ,  lo que sacaría es un listado con puro filas 'PROMOTORAS', luego dices

 

DELETE FROM asocia  WHERE NOT EXISTS  (ese listado)

 

No tiene mucha lógica,  me imagino que quieres eliminar registros que no cumplan cierta condición….. debería ser algo como

 

DELETE FROM asocia  WHERE  campoEvaluacion NOT IN (SELECT ID_ASOCIACION FROM

PADRON WHERE descripcionCampo='PROMOTORAS')

 

 

Saludos

 

-----Mensaje original-----
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de victor velazquez
Enviado el: viernes, 02 de septiembre de 2011 11:09
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Como eliminar un registro de una tabla siempre y cuando no exista en otra con el mismo campo

 

Hola foxeros. estoy liando con sql y me tope con esta incognita:

 

deseo eliminar el registro de una tabla, pero siempre y cuando que este dato no exista en otra tabla (si existe pues que no elimine el registro especificado)

 

tengo esto pero me elimina todos los coincidentes

 

 

como seria la sintaxis.. saludos..

Marco Plaza

unread,
Sep 2, 2011, 8:26:15 PM9/2/11
to publice...@googlegroups.com
Hola para:

borrar todos los registros en archivo A
que no tengan un valor en la columna N que exista en la columna Y de la tabla B

es igual a:

delete from A where N not in ( select Y from B )

Saludos.

Marco Plaza

Reply all
Reply to author
Forward
0 new messages