[sql] Requete Max

Requete Max [sql] - SQL/NoSQL - Programmation

Marsh Posté le 19-08-2009 à 22:28:38    

Bonjour,  
Je me bas avec le Max mais il me renvoi le mauvais ID du Max trouvé:
Exemple, ma table:
 


id_recette     nom   date_creation   version
  1           toto      1250701221      1    
  4           toto      1250702040      2    
  7           titi      1250702040      1
  8           titi      1250702040      2
  9           titi      1250702040      3


 
 
Avec: SELECT id_recette , nom , MAX(version) as version  FROM bmd_recettes group by nom
Il me renvoie:
 

id_recette    nom    version
     1         toto       2


   
Alors que ma version 2 possède l'id_recette 4 et non 1.
Je me suis trompé quelque part?
Merci ;)


Message édité par Negro le 19-08-2009 à 23:34:25

---------------
http://www.zeec.de/media-details.jsp?mediaId=49063
Reply

Marsh Posté le 19-08-2009 à 22:28:38   

Reply

Marsh Posté le 19-08-2009 à 23:23:03    

oui je cherche a avoir l'id de ma plus grand version pour tous mes nom

 

Je savais pas que le MAX on pouvait le mettre en critère where. merci :)
Je vais regarder ça car la requête que tu m'as donnée renvoie:

 

#1111 - Utilisation invalide de la clause GROUP


Message édité par Negro le 19-08-2009 à 23:28:35

---------------
http://www.zeec.de/media-details.jsp?mediaId=49063
Reply

Marsh Posté le 19-08-2009 à 23:30:18    

SELECT * FROM bmd_recettes WHERE version=(SELECT MAX(version) FROM bmd_recettes)
 
J'ai testé ceci, ca me renvoi uniquement LA plus grande version, alors que je peux avoir plusieurs nom et de plusieurs versions différentes


---------------
http://www.zeec.de/media-details.jsp?mediaId=49063
Reply

Marsh Posté le 19-08-2009 à 23:31:05    

Oui en effet, j'ai merdé, c'est pour ça que j'ai retiré ma réponse, ça ne colle pas et c'est totalement honteux en y repensant, je me penche sur ta question

Reply

Marsh Posté le 19-08-2009 à 23:32:00    

Tu es bien sur MySQL ?

Reply

Marsh Posté le 19-08-2009 à 23:32:26    

antac a écrit :

Oui en effet, j'ai merdé, c'est pour ça que j'ai retiré ma réponse, ça ne colle pas et c'est totalement honteux en y repensant, je me penche sur ta question


 
c'est pas grave ;)
C'est déjà super gentil d'avoir répondu.
 
J'ai testé de placer un group by nom dans ma dernière requete.... pas moyen...
 
(je mets a jour le 1er post pour mettre plus d'exemple dans la table)


---------------
http://www.zeec.de/media-details.jsp?mediaId=49063
Reply

Marsh Posté le 19-08-2009 à 23:33:19    

antac a écrit :

Tu es bien sur MySQL ?


 
MySQL 4.1.9-max sur le serveur localhost ;)


---------------
http://www.zeec.de/media-details.jsp?mediaId=49063
Reply

Marsh Posté le 19-08-2009 à 23:35:24    


id_recette     nom   date_creation   version
  1           toto      1250701221      1    
  4           toto      1250702040      2    
  7           titi      1250702040      1
  8           titi      1250702040      2
  9           titi      1250702040      3


 
en gros je veux avoir mes dernières versions de mes noms:
 
4-toto-version 2
9-titi - version 3


---------------
http://www.zeec.de/media-details.jsp?mediaId=49063
Reply

Marsh Posté le 19-08-2009 à 23:58:27    

tu as la possibilité de mettre à jour MySQL ?

Reply

Marsh Posté le 19-08-2009 à 23:59:27    

le truc que je ferai, c'est une fonction SQL qui te détermine le max à partir des paramètres du nom et que tu renvoi.

Reply

Marsh Posté le 19-08-2009 à 23:59:27   

Reply

Marsh Posté le 20-08-2009 à 10:06:11    

En gros un  
 
Select id_recette,nom,date_creation,version,ismax(id_recette)
From bmd_recettes
Where ismax(id_recette)=true

Reply

Marsh Posté le 24-08-2009 à 09:43:45    

merci je vais testé ca ;)
comme mon client était pressé, j'avais trouvé l'astuce de faire une 2eme requête pour trouver l'id en fonction du nom et max(version) retourné par ma 1ere requete


---------------
http://www.zeec.de/media-details.jsp?mediaId=49063
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed