Page 1 sur 1

requete qui supprime dans plusieurs tables

Posté : 23 juin 2006, 13:50
par azerty53
Bonjour a la communauté

j'ai une requete qui doit supprimer dans 2 tables
$sql=mysql_query('DELETE FROM produit ON posseder INNER JOIN posseder.pro_id=produit.pro_id WHERE pro_id='.$id );
le $id est bon j'obtiens bien la valeur quand je fais un echo.

en fait j'ai une table produit

PRODUIT
pro_id
pro_lib
pro_prix

POSSEDER
pro_id
cat_id

valeur

mais il ne veut pas me supprimer ce que je veux.

il fait comme si il supprimait mais il ne m'enleve rien. et je n'ai pas de message d'erreur c'est que ma requete doit pas etre si fausse que ca :):)

si quelqu'un pouvait m'eclairer ;)

Merci

Posté : 23 juin 2006, 14:40
par zeus
Déjà, ta jointure est bancale. Ensuite, je ne sais pas si ça fonctionne :-k

essaye ça :
$sql=mysql_query('DELETE FROM produit JOIN posseder ON posseder.pro_id=produit.pro_id WHERE pro_id='.$id );

Posté : 23 juin 2006, 15:27
par azerty53
merci zeus d'avoir tenté mais ca change rien. en attendant j'avais tenté ca mais :cry: :cry: :cry: :cry: ca marche tjrs pas :(:(

EDIT: j'ai placé un mysql_error et il me dit que j'ai un pb de jointure

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN posseder ON posseder.pro_id=produit.pro_id WHERE pro_id=171

Posté : 23 juin 2006, 16:14
par zeus
Dans la doc, j'ai trouvé ces 2 syntaxes :
DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

ou :

DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

Posté : 23 juin 2006, 17:49
par Henri
Ta requête ne peut pas supprimer dans deux tables. Il faudrait un

Code : Tout sélectionner

delete from produit , posseder ...
Pour l'utilisation des jointures dans un delete, voir ici http://www.samspublishing.com/articles/ ... um=10&rl=1

Mais pour parler franchement, supprimer des enregistrements dans deux tables avec en plus une jointure externe, c'est prendre des risques assez considérables au niveau du développement, de la mise au point et des tests. C'est tellement plus simple de faire deux delete l'un à la suite de l'autre.

A vérifier : je ne suis pas sûr du tout qu'un delete sur plusieurs tables soit dans la norme SQL. A mon avis, il s'agit de jargon MySQL