Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3116 connectés 

  FORUM HardWare.fr
  Programmation

  Mysql , problème avec NOT IN et NOT EXISTS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mysql , problème avec NOT IN et NOT EXISTS

n°150971
jultey
Posté le 04-06-2002 à 15:14:54  profilanswer
 

'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 : :fou:  
 
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 : :cry:  
 
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 ?...

mood
Publicité
Posté le 04-06-2002 à 15:14:54  profilanswer
 

n°150981
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-06-2002 à 15:22:48  profilanswer
 

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)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°150985
jultey
Posté le 04-06-2002 à 15:27:57  profilanswer
 

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 ??? :bounce:

n°150990
youdontcar​e
Posté le 04-06-2002 à 15:37:48  profilanswer
 

jultey a écrit a écrit :

Comment je fais alors ? Quelqu'un a une idée ??? :bounce:


tu lis la doc :D 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).

n°150995
jultey
Posté le 04-06-2002 à 15:43:17  profilanswer
 

youdontcare a écrit a écrit :

tu lis la doc :D 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...

n°151035
z0rglub
Posté le 04-06-2002 à 16:14:14  profilanswer
 
n°151044
jultey
Posté le 04-06-2002 à 16:19:47  profilanswer
 

jultey a écrit a écrit :

 
 
Allez, je vais chercher...  




 
merci pour ce lien tres tres tres intéressant !!!  :jap:

n°151056
DLR
Hein c'était quoi la question?
Posté le 04-06-2002 à 16:25:21  profilanswer
 

ca fait partie de la TODO list de MySQL depuis un bail :/


---------------
Narf... It is broken...
n°151080
jultey
Posté le 04-06-2002 à 16:45:33  profilanswer
 

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...

n°151112
siewn
Posté le 04-06-2002 à 17:23:30  profilanswer
 

jultey a écrit a écrit :

 
La TODO ?? C'est quoi ?  




 
lol
TODO = TO DO = A FAIRE :-)

mood
Publicité
Posté le 04-06-2002 à 17:23:30  profilanswer
 

n°151119
mrbebert
Posté le 04-06-2002 à 17:27:14  profilanswer
 

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)


Message édité par mrbebert le 06-04-2002 à 17:29:29
n°151142
jultey
Posté le 04-06-2002 à 17:49:07  profilanswer
 

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  ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Mysql , problème avec NOT IN et NOT EXISTS

 

Sujets relatifs
problème de cadre..mysql sous unix : récupérer les messages d'erreurs
[Delphi] [newbi] un ptit probleme[JAVASCRIPT] Problème d'accès à une frame dans une fonction (résolu)
mysql, update where id='$id' :([MySQL] Passer un script sur la base ... comment ?
[VB] Problème de APP.Path avec ma BDmysql : 'tites question
mysql / load data in file[JAVA] probleme graphique avec mes JTree !!!!
Plus de sujets relatifs à : Mysql , problème avec NOT IN et NOT EXISTS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR