DELETE+JOIN

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : DELETE+JOIN

par HR » 23 déc. 2005, 02:16

Tu ne peux pas utiliser de LEFT JOIN directement avec DELETE, mais tu dois pouvoir utiliser une table dérivée avec un DELETE multi-table comme ça:

Code : Tout sélectionner

DELETE p.* FROM ( SELECT products.products_id FROM products LEFT JOIN products_description USING (products_id) WHERE products_description.products_id IS NULL ) AS p2, products p WHERE p.products_id = p2.products_id

par pandipanda » 20 déc. 2005, 10:35

J'ai donc essayé :

requête SQL:

Code : Tout sélectionner

DELETE FROM products WHERE products.products_id IN ( SELECT products.products_id FROM products LEFT JOIN products_description ON products_description.products_id = products.products_id WHERE products_description.products_id IS NULL )
MySQL a répondu:

#1093 - You can't specify target table 'products' for update in FROM clause

idem pour

requête SQL:

Code : Tout sélectionner

DELETE FROM products LEFT JOIN products_description ON products_description.products_id = products.products_id WHERE products_description.products_id IS NULL MySQL a répondu:

#1064 - 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 'LEFT JOIN products_description

par pascaltje » 19 déc. 2005, 22:22

et ça ?

Code : Tout sélectionner

DELETE FROM products LEFT JOIN products_description ON products_description.products_id = products.products_id WHERE products_description.products_id IS NULL
A+

Pascal

par Cyrano » 19 déc. 2005, 21:46

Alors tu devrais pouvoir faire une requête imbriquée du style

Code : Tout sélectionner

DELETE FROM table WHERE champ IN (SELECT etc...)

par pandipanda » 19 déc. 2005, 21:20

mysql 4.1 :)

par Cyrano » 19 déc. 2005, 18:35

Quel SGBD et quelle version ?

DELETE+JOIN

par pandipanda » 19 déc. 2005, 18:03

je cherche a nettoyer une table products des tuple qui non aps de concordance dans une table liée products_description , voici ma requete select qui me renvoie les tuples orphelins masi comment faire pour transformer ce select en delet ???

Code : Tout sélectionner

SELECT * FROM products LEFT JOIN products_description ON products_description.products_id = products.products_id WHERE products_description.products_id IS NULL