2010-08-20 5 views
0
DELETE FROM Books INNER JOIN (Classes, Class_Books) ON (Books.ISBN = Class_Books.ISBN AND Class_Books.Class_ID = Classes.Class_ID AND Classes.Term_ID = 63) WHERE Year = '""' 

Donne une erreur: # 1064 - Vous avez une erreur dans votre syntaxe SQL;Problème avec DELETE JOIN

SUPPRIMER avec SELECT Remplaçant cela fonctionne bien si

+0

http://dev.mysql.com/doc/refman/5.5/en/delete.html –

Répondre

1

Essayez ce qui suit, qui efface les enregistrements dans les livres qui ont un Classes.Term_ID = 63.

DELETE b FROM Books b 
    INNER JOIN Class_Books cb ON b.ISBN = cb.ISBN 
    INNER JOIN Classes c ON cb.Class_ID = c.Class_ID 
WHERE Year = '""' 
    AND c.Term_ID = 63 
+0

Cette requête expire pour une raison quelconque (en remplaçant DELETE par SELECT * ce n'est pas le cas – babonk

+0

En fait, il semble que toute la requête expire maintenant .. donc je vais comprendre le problème général, puis répondre .. – babonk

1

Dans SQL, vous dites

DELETE FROM 

pas

DELETE * FROM 

même si elle est

SELECT * FROM 
+0

merci, l'a corrigé – babonk

+0

par "il" je veux dire la question .. erreur toujours là – babonk

1
DELETE FROM Books 
WHERE ISBN IN (Select Class_Books.ISBN from Class_Books, Classes 
       WHERE Class_Books.Class_ID = Classes.Class_ID 
       AND Classes.Term_ID = 63 
      ) 
AND Year = '""' 
+0

Cette requête expire pour une raison quelconque, même si en remplaçant DELETE par SELECT * il ne .. – babonk

+0

@babonk, la sous-requête expire également? –

+0

Sous-requête expire – babonk