Bonjour,
j'ai un petit souci, j'ai besoin de faire un MAX() sur un SUM() dans une requête comportant des jointures.
Voici le schéma des tables utilisées pour la requête :
SERVEUR (NUM_SERVEUR, NOM_SERVEUR)
COMMANDE (NUM_COMMANDE, NUM_TABLE, NUM_SERVEUR, DATE, PRIX_TOTAL)
CONCERNER(NUM_CONSO, NUM_COMMANDE, QUANTITE)
CONSOMMATION (NUM_CONSO, NOM_CONSO, PRIX_CONSO)
Ma requête doit sélectionner le serveur qui a vendu le plus de tel ou tel consommation (NOM_CONSO).
En essayant ceci, j'ai tous les serveurs avec la quantité totale pour la conso '7up' :
Mais je n'arrive pas à sélectionner seulement celui qui en a vendu le plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT NOM_SERVEUR, SUM(QUANTITE) AS QTE FROM SERVEUR INNER JOIN COMMANDE ON SERVEUR.NUM_SERVEUR = COMMANDE.NUM_SERVEUR INNER JOIN CONCERNER ON COMMANDE.NUM_COMMANDE = CONCERNER.NUM_COMMANDE INNER JOIN CONSOMMATION ON CONCERNER.NUM_CONSO = CONSOMMATION.NUM_CONSO WHERE CONSOMMATION.NOM_CONSO = '7up' GROUP BY NOM_SERVEUR;
J'ai essayé ceci :
dans la première ligne mais ça ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part MAX(SUM(QUANTITE))
J'ai essayé ensuite ceci :
Mais ça me donne toujours tous les serveurs avec leurs quantités totales.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT NOM_SERVEUR, MAX(QTE) FROM (SELECT NOM_SERVEUR, SUM(QUANTITE) AS QTE FROM SERVEUR INNER JOIN COMMANDE ON SERVEUR.NUM_SERVEUR = COMMANDE.NUM_SERVEUR INNER JOIN CONCERNER ON COMMANDE.NUM_COMMANDE = CONCERNER.NUM_COMMANDE INNER JOIN CONSOMMATION ON CONCERNER.NUM_CONSO = CONSOMMATION.NUM_CONSO WHERE CONSOMMATION.NOM_CONSO = '7up' GROUP BY NOM_SERVEUR) GROUP BY NOM_SERVEUR;
Je voulais essayer ceci (identique au premier essai mais avec un having) :
Mais je ne sais pas quoi mettre comme fonction et comme opérateur pour le HAVING
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT NOM_SERVEUR, SUM(QUANTITE) AS QTE FROM SERVEUR INNER JOIN COMMANDE ON SERVEUR.NUM_SERVEUR = COMMANDE.NUM_SERVEUR INNER JOIN CONCERNER ON COMMANDE.NUM_COMMANDE = CONCERNER.NUM_COMMANDE INNER JOIN CONSOMMATION ON CONCERNER.NUM_CONSO = CONSOMMATION.NUM_CONSO WHERE CONSOMMATION.NOM_CONSO = '7up' GROUP BY NOM_SERVEUR HAVING...;
Merci d'avance à celui qui m'apportera un peu d'aide !








Répondre avec citation
Partager