[MySQL] where clause pour DELETE

Fermé
arnaudligth - 11 févr. 2009 à 09:28
 BNJL - 12 févr. 2009 à 15:18
Bonjour,


Alors en fait j'ai 2 tables :
- refs qui a comme champs id_ref et d'autres champs quelconque
- stocks qui a comme champs id_stock, id_ref et d'autres champs quelconque

ce que je voudrais faire c'est effacer de la table refs les enregistrements dont les id_refs ne sont pas présents dans la table stocks, pour illustrer :


table refs
id_ref
1
2
3
4
5

table stocks
id_stock | id_ref
1 | 2
2 | 3
3 | 4
4 | 5

dans cet exemple il faudrait que l'enregistrement avec l'id__ref=1 soit effacer de la table refs car il n'es pas présent dans la table stock.


PS
Si c'est pas possible avec DELETE une requete avec SELECT qui me permet de lister les id_refs qui sont présents dans la table refs et pas dans la table stocks.
Si je peux avoir les explications avec ça serai encore mieux, histoire de pas rester dans l'ignorance...

Merci d'avance.

2 réponses

Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51
11 févr. 2009 à 10:10
Bonjour,

Alors avec un SELECT :

$query('SELECT id_ref
           FROM refs
           WHERE id_ref NOT IN (SELECT id_ref FROM stocks)');



Avec un DELETE :

$query=('DELETE * 
              FROM refs WHERE id_ref NOT IN (SELECT id_ref FROM sotcks)');
0
Merci pour ta réponse Psyk mais je doit louper un truc parce que pour la requete SELECT dans PHPMyAdmin j'ai droit à un

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 'SELECT id_ref FROM stocks ) LIMIT 0, 30' at line 1
0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51 > arnaudligth
11 févr. 2009 à 10:31
Quelle est ta version de mysql ?
0
arnaudligth > Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010
11 févr. 2009 à 10:47
euh... comment savoir ? (punaise ça crains pour moi là je crois...) je suis chez 1and1
0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51 > arnaudligth
11 févr. 2009 à 10:52
Sur la page d'accueil de phpmyadmin normalement on te donne la version.

Sinon sur l'espace de ton hebergeur on te donne la version de mysql
0
arnaudligth > Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010
11 févr. 2009 à 11:30
laborieux mais j'ai trouvé MySQL4.0 !!!
0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51
11 févr. 2009 à 13:43
Alors utilise un LEFT JOIN

SELECT id_refs 
FROM stocks LEFT JOIN refs
              ON stocks.id_refs = refs.id_refs
WHERE refs.id_refs is NULL

0