PDA

Visualizza la versione completa : SQL : delete con una left join


bencio69
19-11-2008, 12:59
Ho bisogno di aiuto.

Ho 2 tabelle.
Una principale (A) che contiene una foreing key univoca della seconda (B).
Per problemi DBA non è stata creata a livello di database una relazione che avrebbe mantenuto allineate le due tabelle.

Ora devo cancellare le righe della tabella A che hanno foreing key della tabella B che non esistono più.

Per visualizzare queste righe utilizzo una left join di questo tipo

SELECT A.CAMPO1A, B.CAMPO1B
FROM A LEFT JOIN B ON B.PRIMARY_KEY = A.FOREING_KEY
WHERE B.CAMPO1B IS NULL;

Considerando che il CAMPO1B della tabella B non può essere nullo.

Ma come faccio a fargli un delete delle righe della tabella A?

Grazie a tutti.

Baldolo
21-11-2008, 16:50
Se ho ben capito, prova il comando EXISTS:

DELETE FROM TABELLA A
WHERE eventuale condizione
AND EXISTS (la tua select sulla tabella B)

Ciao.

Loading