Merci pour votre aide. Je suis débutant, vous l'avez remarqué.
Voici les tables utilisées :
table commande :
clé primaire : nocommande
nocommande : integer
datecommande : date
noclient : integer
table detaillivraison :
clé primaire : nolivraison, nocommande, noarticle
nolivraison : integer
nocommande : integer
noarticle : integer
quantitelivree : integer
J'ai besoin des nolivraison des livraisons qui touchent à toutes et chacune des commandes du client 10 fait au mois de juin 2000.
La livraison doit toucher à toutes les commandes (et non pas une des commandes) du client 10 faites au mois de juin 2000. Pour l'essai, il y a 2 commandes concernées, la commande 1 et la commande 3. Il faut donc que la livraison contiennent des articles des deux commandes et non pas d'une seule des deux.
Dans mon premier test que j'ai mis hier, j'ai ajouté le numéro de commande pour vérification :
1 2 3 4 5
| SELECT DL.noLivraison, c.nocommande
FROM detaillivraison Dl, commande C
WHERE C.noClient=10
AND C.noCommande=Dl.noCommande
AND C.dateCommande BETWEEN '01/06/2000' AND '30/06/2000'; |
Cela me donnait :
noLivraison nocommande
100 1
100 1
103 1
101 1
100 3
Je dois au final juste afficher le numéro de livraison qui a plusieurs commandes différentes (ici 1 et 3).
J'ai changé le code par rapport à votre aide :
1 2 3 4 5 6
| SELECT noLivraison, totalcommande FROM (SELECT DL.noLivraison, count(c.nocommande) as totalcommande FROM detaillivraison Dl, commande C
WHERE C.noClient=10
AND C.noCommande=Dl.noCommande
AND C.dateCommande BETWEEN '01/06/2000' AND '30/06/2000'
GROUP BY DL.noLivraison
HAVING count(c.nocommande)> 1); |
J'ai ajouté totalcommande pour vérifier le nombre de commande.
Cela donne ceci :
nolivraison totalcommande
100 3
Il me semble que je devrais avoir 2 comme total des commandes car pour la livraison 100, j'ai peut-être 3 commandes au total mais 2 commandes différentes (la 1 et la 3).
Et donc, je dois revoir quelque chose dans la requête.
Je me trompe peut-être ?
Merci d'avance pour votre aide.
Partager