Problemme récupérer l'id du montant le plus grand

Eléphanteau du PHP | 37 Messages

07 nov. 2011, 22:14

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

ViPHP
ViPHP | 1996 Messages

08 nov. 2011, 00:36

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 ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 37 Messages

08 nov. 2011, 10:32

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 nov. 2011, 10:40

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 ?

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 37 Messages

08 nov. 2011, 12:56

donc pas moyen de faire une jointure

merci a vous

ViPHP
xTG
ViPHP | 7331 Messages

08 nov. 2011, 12:58

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