Mysql , problème avec NOT IN et NOT EXISTS - Programmation
Marsh Posté le 04-06-2002 à 15:22:48
Il me semble que MySQL ne gère pas les Select imbriqués (du moins les versions avant la 4 ; pour cette dernière je ne sais pas)
Marsh Posté le 04-06-2002 à 15:27:57
antp a écrit a écrit : Il me semble que MySQL ne gère pas les Select imbriqués (du moins les versions avant la 4 ; pour cette dernière je ne sais pas) |
Comment je fais alors ? Quelqu'un a une idée ???
Marsh Posté le 04-06-2002 à 15:37:48
jultey a écrit a écrit : Comment je fais alors ? Quelqu'un a une idée ??? |
tu lis la doc histoire de voir si le select imbriqué a été implémenté.
sinon, la solution recommandée est de passer par une table temporaire (encore une fois, mysql.com).
Marsh Posté le 04-06-2002 à 15:43:17
youdontcare a écrit a écrit : tu lis la doc histoire de voir si le select imbriqué a été implémenté. sinon, la solution recommandée est de passer par une table temporaire (encore une fois, mysql.com). |
Allez, je vais chercher...
Marsh Posté le 04-06-2002 à 16:14:14
http://forum.hardware.fr/forum2.php3?post=17605&cat=10
Marsh Posté le 04-06-2002 à 16:19:47
jultey a écrit a écrit : Allez, je vais chercher... |
merci pour ce lien tres tres tres intéressant !!!
Marsh Posté le 04-06-2002 à 16:25:21
ca fait partie de la TODO list de MySQL depuis un bail
Marsh Posté le 04-06-2002 à 16:45:33
DLR a écrit a écrit : ca fait partie de la TODO list de MySQL depuis un bail |
La TODO ?? C'est quoi ?
Pour mon pb de requete, j'essaie avec un join :
SELECT eleve.ele_ref, eleve.ele_prenom, eleve.ele_nom
FROM eleve
WHERE ele_actif=1
LEFT JOIN classe
ON ele_ref_classe=clas_ref
WHERE ele_ref_class IS NULL ;
Mais j'obtiens une erreur... (j'avais jamais utilisé join avant , soyez indulgent)...
->
Native Error Code: 1064
[TCX][MyODBC]You have an error in your SQL syntax near 'LEFT JOIN classe ON ele_ref_classe=clas_ref WHERE ele_ref_class IS NULL ; ' at line 1
Si quelqu'un voit rapidement d'ou ca peut venir...
Marsh Posté le 04-06-2002 à 17:23:30
jultey a écrit a écrit : La TODO ?? C'est quoi ? |
lol
TODO = TO DO = A FAIRE :-)
Marsh Posté le 04-06-2002 à 17:27:14
jultey a écrit a écrit : SELECT eleve.ele_ref, eleve.ele_prenom, eleve.ele_nom FROM eleve WHERE ele_actif=1 LEFT JOIN classe ON ele_ref_classe=clas_ref WHERE ele_ref_class IS NULL ; |
Le WHERE doit aller après le LEFT JOIN
SELECT...
FROM...
LEFT JOIN...
WHERE...
Edit : en fait, tu dois fusionner les 2 where :
WHERE eleve.ele_actif=1 AND (classe.ele_ref_class IS NULL)
Marsh Posté le 04-06-2002 à 17:49:07
mrbebert a écrit a écrit : Le WHERE doit aller après le LEFT JOIN SELECT... FROM... LEFT JOIN... WHERE... Edit : en fait, tu dois fusionner les 2 where : WHERE eleve.ele_actif=1 AND (classe.ele_ref_class IS NULL) |
OK merci ! Mais en fait, j'ai contourner le problème... Maintenant, y'a plus moyen de supprimer une classe avec un élève dedans... (enfin, j'me comprends, c'est le principal ).
En tout cas, merci pour votre aide
Marsh Posté le 04-06-2002 à 15:14:54
'lut !
J'ai un petit (j'espère) problème de sql.
En asp sur mysql, j'ai une table d'élève qui ont en clés étrangère la référence d'une classe.
Dans un premier temps j'ai recupérer la liste des élèves qui ont une classes...
Maintenant j'aimerais récupérer les élèves qui n'ont pas de classes alors je pensais utiliser NOT IN, ca ne marche pas :
SELECT ele_ref, ele_prenom, ele_nom
FROM eleve
WHERE ele_actif=1
AND ele_ref NOT IN
( SELECT ele_ref
FROM eleve, classe
WHERE ele_ref_classe=clas_ref
AND ele_actif=1
)
me renvoit :
SQLState: 42000
Native Error Code: 1064
[TCX][MyODBC]You have an error in your SQL syntax near 'NOT ( SELECT ele_ref, ele_prenom, ele_nom FROM eleve WHERE ele_actif=1 AND ele_r' at line 1
Alors j'ai essayé avec NOT EXISTS, ca marche pas non plus...
Vous voyez d'ou vient le problème ?...