|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : octobre 2011 Messages : 5 ![]() |
Bonjour,
J'ai besoin de votre aide pour terminer une requête : Code :
Cela donne ceci : noLivraison nocommande 100 1 100 1 103 1 101 1 100 3 dans cet exemple, j'aurai comme résultat juste : 100 car il a 2 commandes (1 et 3) associées. Merci pour votre aide précieuse. |
||
|
|
00
|
|
|
#2 | ||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 698 ![]() |
Bonjour
ce serait bien d'utiliser les balises Et d'utiliser la norme SQL sur la construction des jointures ![]() Pour ta requête il faut passer par une sous-requête (qui calculera le nombre de commande) et permettra à la requête principale de sélectionner les livraisons adéquates. Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() Inscription : janvier 2009 Messages : 301 ![]() |
Bonjour,
Il serait bien pour ce type de question de présenter les tables utilisées. En effet, le modèle du résultat souhaité me paraît étrange. Il semblerait que la commande part de la livraison. Or, dans la pratique, il y a d'abord la commande puis la livraison. Il ne s'agit que d'une impression. Par ailleurs, le type de jointure employé dans ta requête n'est plus d'actualité depuis plus de 20 ans. Vas voir le lien ci-dessous, il te donnera toutes les explications http://sqlpro.developpez.com/cours/sqlaz/jointures/. Pour les dates, tu es certain que ta base données accepte cette forme de date '01/06/2000'. Je pense qu'il serait préférable de faire une requête paramétrée Code :
C.dateCommande BETWEEN :pDebut AND :pFin Il est clair que la requête présentée ne peut pas te retourner le résultat que tu souhaites. Mais pour la corriger, il nous faut plus d'explications Bon courage |
|
|
00
|
|
|
#4 | ||
|
Membre éclairé
![]() |
c'est comme ça que tu l'adapte:
Code :
|
||
|
|
01
|
|
|
#5 | ||||
|
Invité de passage
![]() Inscription : octobre 2011 Messages : 5 ![]() |
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 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 : Code :
noLivraison nocommande 100 1 100 1 103 1 101 1 100 3 J'ai changé le code par rapport à votre aide : Code :
Cela donne ceci : nolivraison totalcommande 100 3 Et donc, je dois revoir quelque chose dans la requête. Je me trompe peut-être ? Merci d'avance pour votre aide. |
||||
|
|
00
|
|
|
#6 | |
|
Membre éprouvé
![]() Inscription : janvier 2009 Messages : 301 ![]() |
Bonjour,
Il serait bien de nous donner les éléments inclus dans les tables commande et detaillivraison. Si je comprends bien, la clé primaire de la table Commande est NoCommande. Or, il n'est pas possible, dans une clé primaire, d'avoir plusieurs commandes qui soient numérotées 1. Citation:
Pour obtenir une réponse à ta demande, il serait souhaitable de nous fournir des renseignements pour reconstituer les opérations :
Avec cela, il sera possible de répondre exactement et de fournir une requête en exemple. @+ |
|
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Citation:
Code :
count(DISTINCT c.nocommande) AS totalcommande |
|
|
|
10
|
|
|
#8 |
|
Invité de passage
![]() Inscription : octobre 2011 Messages : 5 ![]() |
Merci skuatamad. Ma requête est correcte maintenant.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com