Ce forum est maintenant fermé, seule cette archive statique reste consultable.
  FORUM Rue-Montgallet.com
  Programmation
  Php - Sql

  [MySQL] Sous-requête

Bas de page
Auteur Sujet :

[MySQL] Sous-requête

n°13611
Fane_CHP
Just Free It
Profil : Membre
Posté le 10-06-2005 à 10:45:56  
 

Hello
 
Je cherche à faire une requête imbriquée du type

Code :
  1. SELECT *
  2. FROM `inscrire`
  3. WHERE `saisons_id` = (
  4. SELECT MAX( `saisons_id` )
  5. FROM `inscrire` )


 
et ça marche pô
 
La je sais, elle sert à rien mis c'est pour l'exemple.
 
Serveur Mysql 5
 
Je suppose que c'est un problème de syntaxe mais je sèche...
 
Merci de votre aide


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
mood
Pub
Posté le 10-06-2005 à 10:45:56  
 

n°13624
Fane_CHP
Just Free It
Profil : Membre
Posté le 10-06-2005 à 14:29:07  
 

[:donkey]


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
n°13629
Fane_CHP
Just Free It
Profil : Membre
Posté le 10-06-2005 à 16:00:42  
 

Non j'ai fumé, c'est une 4.0.17 (OVH)
 
Est-ce qu'il y a une solution avec un JOIN?
 
j'explique ce que je veux faire:
 
table1: adherents {adherents_id, adherents_nom...... }
table2: saisons { saisons_id, saisons_libelle ......}
table3: inscrire {adherents_id, saisons_id)
+ d'autres qui ne posent pas de problèmes.
 
Je veux les adhérents inscrits pour la saison en cours
 
J'avais donc pensé à un  

Code :
  1. SELECT adherents.*
  2. FROM adherents, inscrire, saisons
  3. WHERE ((adherents.adherents_id=inscrire.adherents_id)
  4. AND (inscrire.saisons_id=saisons.saisons_id)
  5. AND (saisons_saisons_libelle=(SELECT MAX(saisons_libelle) FROM saisons)))


 
Vu que le serveur n'a pas l'air d'apprecier, comment faire. Merci ... :jap:


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
n°13684
Tastito
So lost in love
Profil : Dinosaure
Posté le 14-06-2005 à 01:43:10  
 

Je sais pas si c'est ca mais ligne 5 faut pas mettre un "IN" à la place du "="  ??


Message édité par Tastito le 14-06-2005 à 01:43:23

---------------
"Oh, that girl, you know she really, blows my, head apart,  
And the sky and the stars, all, synkronized...  
Eh no.... No no no, now me and her,  
We are in love... "  
n°13712
ollone
Part of the 'One brothers
Profil : Vieux de la vieille
Posté le 15-06-2005 à 10:32:23  
 

+1, ligne 5 remplace = par IN.
De plus, tes parenthèses ne servent à rien dans ton cas, évidement sauf celles de la sous-requête.

Code :
  1. SELECT adherents.*
  2. FROM adherents, inscrire, saisons
  3. WHERE adherents.adherents_id=inscrire.adherents_id
  4. AND inscrire.saisons_id=saisons.saisons_id
  5. AND saisons_saisons_libelle IN (SELECT MAX(saisons_libelle) FROM saisons))


 
De plus, tu fais un max() sur un libellé ( :??: ), si c'est vraiment du texte, ca ne fonctionnera pas bien :whistle:
Et puis la ligne 4 ne sert à rien dans ta requête, sauf si tu as allégé la clause SELECT pour l'exemple...
Enfin, elle ne tourne pas rond ta requête...

n°13794
Fane_CHP
Just Free It
Profil : Membre
Posté le 20-06-2005 à 11:17:24  
 

c'était franchement allégé en effet.
 
Mais j'ai ma réonse, les sous requêtes ne fonctionnent qu'à partir de MySQL 4.11, et je suis en 4.0.17.
 
Plus qu'a attendre que ça migre.
 
Merci à tous.


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
  FORUM Rue-Montgallet.com
  Programmation
  Php - Sql

  [MySQL] Sous-requête

© 2000-2024 Forum.rue-montgallet.com - Tous droits réservés