Page 1 sur 1
Problemme récupérer l'id du montant le plus grand
Posté : 07 nov. 2011, 22:14
par gladii
Bonjours à tous, j'ai voulu faire une requête pour récupérer l'id du montant le plus grand mais il y a un petit problemme :
SELECT commandes1.idclient, commandes1.montant
FROM commandes AS commandes1 INNER JOIN commandes AS commandes2
ON commandes1.montant = max(commandes2.montant);
Je croie que ça vien de la fonction max.
Sinon j'ai trouver la solution avec une sous-requête mais je voulais trouver celle aussi avec une jointure
merci
Re: Problemme récupérer l'id du montant le plus grand
Posté : 08 nov. 2011, 00:36
par Aureusms
Je comprends pas bien. Tu veux joindre sur la même table ? Quel est l'intérêt ?
SELECT commandes1.idclient, commandes1.montant
FROM commandes AS commandes1 WHERE commandes1.montant = max(commandes1.montant);
Est ce que ca marche ?
Re: Problemme récupérer l'id du montant le plus grand
Posté : 08 nov. 2011, 10:32
par gladii
Ben dans se cas autant ecrire
SELECT idclient, montant
FROM commandes WHERE montant = max(montant);
^^
Et nan ça ne marche pas, a part les sous-requêtes je voix pas dautre solution à par
faire un tri en ordre décroissant sur la colonne montant et récupérer la premiere ligne mais c'est pas une jointure.
Et d'apres se que j'ai lu toute requetes peuvent etre remplacé par une jointure

Re: Problemme récupérer l'id du montant le plus grand
Posté : 08 nov. 2011, 10:40
par moogli
tu veux juste le montant le plus grand ?
comme tu le dit
SELECT idclient, montant FROM commandes order by montant desc limit 1;
tu récupère qu'un seul montant et son idclient !
je ne suis pas certain que max soit supporté sur la clause where ?
sinon avec une sous requête
SELECT idclient, montant
FROM commandes WHERE montant = (select max(montant) from commandes;);
devrait fonctionner ?
@+
Re: Problemme récupérer l'id du montant le plus grand
Posté : 08 nov. 2011, 12:56
par gladii
donc pas moyen de faire une jointure
merci a vous
Re: Problemme récupérer l'id du montant le plus grand
Posté : 08 nov. 2011, 12:58
par xTG
Si, tu peux faire des sous-requêtes dans les clauses de jointures sur certains SGBD.
Et puis sinon il suffit de faire des jointures sans les mots clés (tout en clause where) comme à l'ancienne, on perds en performance du fait de la grande sélection mais si tu as vraiment besoin d'obtenir ce résultat...