web-dev-qa-db-fra.com

Suppression avec LEFT JOIN

Je veux supprimer d'une table en fonction des données qui existent sur une autre table qui référence la première. Cependant, j'ai le code qui fonctionne et affiche la valeur à supprimer lorsque je l'exécute comme un élément SELECT DELETE cela me donne des erreurs, que je ne comprends pas pourquoi elles sont là.

DELETE leadCustomer.* FROM coursework.leadCustomer LEFT JOIN coursework.flightBooking
ON leadCustomer.customerID = flightBooking.customerID
WHERE leadCustomer.customerID NOT IN (
SELECT customerID FROM (SELECT customerID, status FROM coursework.flightBooking) AS
StatusCount where status IN  ('R','H') GROUP BY customerID
)
AND leadCustomer.customerID = 8;

Erreur: 

ERROR:  syntax error at or near "leadCustomer"
LINE 1: DELETE leadCustomer.* FROM coursework.leadCustomer LEFT JOIN...
               ^

********** Error **********

ERROR: syntax error at or near "leadCustomer"
SQL state: 42601
Character: 8

J'utilise postgres

15
Matt

De là où je le vois, vous n'avez pas réellement besoin d'une jointure pour effectuer ceci ...

DELETE FROM coursework.leadCustomer 
WHERE leadCustomer.customerID NOT IN (
SELECT distinct customerID FROM coursework.flightBooking  where status IN  ('R','H') 
)
AND leadCustomer.customerID = 8;

il supprimera tous les enregistrements dans le client principal avec un ID client qui est: 1) différent de 8 2) Pas dans le tableau flightbooking avec le statut 'R' ou 'H'

N'est-ce pas ce que vous essayez de faire?

11
Laurent S.

ÉCHANTILLON. SUPPRIMER ENREGISTREMENT DANS LA TABLE 'A' IS IL N'Y A PAS D'ENREGISTREMENT DANS LA TABLE 'H'

DELETE A FROM ARTICULO_ALMACEN A
LEFT JOIN HISTORICO_UNION H
ON A.COD_ARTICULO = H.COD_ARTICULO
AND A.COD_ALMACEN = H.COD_ARTICULO_ALMACEN
AND A.TPROPIEDAD1 = H.PROPIEDAD1
AND A.TPROPIEDAD2 = H.PROPIEDAD2
AND A.TPROPIEDAD3 = H.PROPIEDAD3
WHERE H.COD_ARTICULO IS NULL
46
user3048858

Vous devrez faire ceci:

Supprimer de la TableA Où ID dans (sélectionnez l'ID de la tableA a gauche jointure externe tableB b sur a.ID = b.ID où b.ID est NULL)

0
Kyle