Afficher b en face de a
mkymky
-
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Bonjour les Ingénieurs. c'est encore moi, je ne me lacerai pas tant que vous existez. j'ai besoin de votre aide, j'utilise sql server 2014, dans ma base j'ai une table Colis qui contient le numero, la date, le client, la quantite (Qtecolis) et la categorie. la seule colonne Qtecolis contient la quantité recue si la categorie est rec, la quantite livrée si la categorie est liv. je veux afficher la quantité livrée en face de la quantité recue. voici ma requete: select COLIS.Numcolis, COLIS.Datecolis, COLIS.ClientID, COLIS.Qtecolis as Qte_recue, COLIS.Poids,
(select (COLIS.Qtecolis) from COLIS where COLIS.Categorie = 'liv') as qte_livrée
from colis
where COLIS.Categorie = 'rec'
group by COLIS.Numcolis, COLIS.Datecolis, COLIS.ClientID, COLIS.Poids, COLIS.Qtecolis
having count (COLIS.Numcolis) = 1 ;
Et j'ai ce message d’erreur: "La sous-requête a retourné plusieurs valeurs. Cela n'est pas autorisé quand la sous-requête suit =, !=, <, <= , >, >= ou quand elle est utilisée en tant qu'expression."
je vous demande de l'aide, svp ne m'abandonnez pas, je compte sur vous. merci beaucoup.
(select (COLIS.Qtecolis) from COLIS where COLIS.Categorie = 'liv') as qte_livrée
from colis
where COLIS.Categorie = 'rec'
group by COLIS.Numcolis, COLIS.Datecolis, COLIS.ClientID, COLIS.Poids, COLIS.Qtecolis
having count (COLIS.Numcolis) = 1 ;
Et j'ai ce message d’erreur: "La sous-requête a retourné plusieurs valeurs. Cela n'est pas autorisé quand la sous-requête suit =, !=, <, <= , >, >= ou quand elle est utilisée en tant qu'expression."
je vous demande de l'aide, svp ne m'abandonnez pas, je compte sur vous. merci beaucoup.
A voir également:
- Afficher b en face de a
- Face time - Guide
- Afficher appdata - Guide
- Afficher mot de passe wifi android - Guide
- Afficher google en page d'accueil - Guide
- Afficher taille dossier windows - Guide
5 réponses
Bonjour,
En supposant que ton identifiant de colis soit Numcolis, je te propose la requête suivante :
Par contre, tu devrais vraiment penser à mettre deux colonnes, une pour chaque quantité, non ? Ce serait quand même plus simple... Ou alors deux tables, une pour les envois une pour les réceptions si tu veux faire varier d'autres paramètres (la date d'envoi / de réception, le poids à l'envoi / à la réception...)
Xavier
En supposant que ton identifiant de colis soit Numcolis, je te propose la requête suivante :
SELECT r.NumColis, r.DateColis, r.ClientID, r.QteColis as Qte_recue, r.Poids, l.QteColis as Qte_Livree FROM Colis r LEFT OUTER JOIN Colis l ON r.NumColis = l.NumColis WHERE r.Categorie = 'rec' AND l.Categorie = 'liv'
Par contre, tu devrais vraiment penser à mettre deux colonnes, une pour chaque quantité, non ? Ce serait quand même plus simple... Ou alors deux tables, une pour les envois une pour les réceptions si tu veux faire varier d'autres paramètres (la date d'envoi / de réception, le poids à l'envoi / à la réception...)
Xavier
Bonjour Reivax962.
merci pour votre intérêt, pour la réponse. je vais l'essayer et vous dire quoi. quand à la proposition, c'est ce que j'avais fait et je m’étais encore buté à des problèmes, toute fois, je vais reconsidérer tout ça et vous mettre au courant. en tout cas merci beaucoup.
merci pour votre intérêt, pour la réponse. je vais l'essayer et vous dire quoi. quand à la proposition, c'est ce que j'avais fait et je m’étais encore buté à des problèmes, toute fois, je vais reconsidérer tout ça et vous mettre au courant. en tout cas merci beaucoup.
bonjour Xavier, je viens de vérifier le résultat; il est vrai que ça me donne b en face de a, mais si j'utilise AND il ne me donne aucune donnée et si j'utilise OR il donne toutes les données sur a et sur b aussi. ce que je veux, ce qu'il me donne les quantités reçues sur a uniquement et les quantités livrées sur b uniquement afin que je puisse les comparer.
si ceci n'est pas possible si les sont dans une seule table, proposez moi un autre modèle qui pourrait m'aider. En tout cas, merci beaucoup pour l'aide que vous m'apporter, ça m'a déjà beaucoup aidé.
si ceci n'est pas possible si les sont dans une seule table, proposez moi un autre modèle qui pourrait m'aider. En tout cas, merci beaucoup pour l'aide que vous m'apporter, ça m'a déjà beaucoup aidé.
Bonjour,
Je pense que le problème vient de la règle de jointure.
J'ai utilisé "r.NumColis = l.NumColis" mais je ne suis pas sûr que ce soit la bonne règle, ne connaissant pas exactement ta structure de données.
Pour corriger, il faudrait que tu me dises exactement comment tu fais correspondre une ligne REC avec une ligne LIV.
Xavier
Je pense que le problème vient de la règle de jointure.
J'ai utilisé "r.NumColis = l.NumColis" mais je ne suis pas sûr que ce soit la bonne règle, ne connaissant pas exactement ta structure de données.
Pour corriger, il faudrait que tu me dises exactement comment tu fais correspondre une ligne REC avec une ligne LIV.
Xavier
Merci Xavier. pour faire correspondre la ligne rec à la ligne liv, j'utilise le champ: ClientID. Merci beaucoup Vraiment.
Client seul ? Il ne peut pas y avoir plusieurs commandes pour un seul client ?
ClientID + Date, peut-être ?
Bon, avec ClientID tout seul, la requête deviendrait
Xavier
ClientID + Date, peut-être ?
Bon, avec ClientID tout seul, la requête deviendrait
SELECT r.NumColis, r.DateColis, r.ClientID, r.QteColis as Qte_recue, r.Poids, l.QteColis as Qte_Livree FROM Colis r LEFT OUTER JOIN Colis l ON r.ClientID = l.ClientID WHERE r.Categorie = 'rec' AND l.Categorie = 'liv'
Xavier
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonsoir Xavier, maintenant ça me donne les rec sur une colonne et les liv sur une autre; seulement il y a une redondance. ça se double sur tous les deux colonnes. comment éliminer ça? Merci, franchement merci.
Bonjour,
Désolé pour le délai.
Pour votre problème, il faudrait savoir qu'est-ce qui peut permettre de différencier les lignes en double.
Prenez un clientID qui pose problème, et exécutez la requête suivante :
SELECT * FROM Colis WHERE ClientId = XXX
(ou XXX est le clientID choisi)
Donnez-moi le résultat (avec les en-têtes de colonne), pour que je voie ce qu'il faut faire.
Xavier
Désolé pour le délai.
Pour votre problème, il faudrait savoir qu'est-ce qui peut permettre de différencier les lignes en double.
Prenez un clientID qui pose problème, et exécutez la requête suivante :
SELECT * FROM Colis WHERE ClientId = XXX
(ou XXX est le clientID choisi)
Donnez-moi le résultat (avec les en-têtes de colonne), pour que je voie ce qu'il faut faire.
Xavier