Encore un probleme de requete SQL - SQL/NoSQL - Programmation
Marsh Posté le 31-05-2005 à 15:18:58
j'ai essayé de trouver avec toi une solution mais c'est impossible je pense avec cette état pcq on a aucun champs qui indique combien du fois le client a commandé un article x, voilà j'ai une petite idée mais je ne sais pas est ce que ca va marcher, tu vas ajouter un attribu ds la table de jointure détail commande (NbrCommArt) et chaque fois tu incrément +1 voilà et ds la requete tu mets la condition voilà j'attends ta réponse
Marsh Posté le 31-05-2005 à 15:25:59
Toti2006 a écrit : j'ai essayé de trouver avec toi une solution mais c'est impossible je pense avec cette état pcq on a aucun champs qui indique combien du fois le client a commandé un article x, voilà j'ai une petite idée mais je ne sais pas est ce que ca va marcher, tu vas ajouter un attribu ds la table de jointure détail commande (NbrCommArt) et chaque fois tu incrément +1 voilà et ds la requete tu mets la condition voilà j'attends ta réponse |
merci pour ta reponse,mais comme c'est un TP je n'ai pas le "droit" de toucher aux tables.
Je continue de chercher,mon formateur m'a assuré qu'il y avait une solution...
Marsh Posté le 31-05-2005 à 15:30:06
J'ai aussi regardé un peu, et sans un champ supplémentaire je vois pas trop trop... Du moins en 5mins...!
Si j'ai un eclair, je te tiens au courant!
Marsh Posté le 31-05-2005 à 15:47:10
là cod57 je ne vois pas vraiment cette solution désole j'ai ton MLD devant moi mais j'arrive pas a trouver !!
Marsh Posté le 31-05-2005 à 16:56:50
il suffit juste de regarder si le produit a ete commander par 2 client differents
un truc de ce genre devrait fonctionner (meme si ya plus simple ...) :
select distinct ar.NoArt , ar.désignation
from client c1,
client c2,
article ar
where ar.NoArt in (
SELECT DISTINCT De.NoArt
FROM détailCmde AS De,
commande AS Co,
client AS Cl ,
article AS AR
WHERE De.NoCmde=Co.NoCmde
AND Cl.NoClient=Co.NoClient
AND Ar.NoArt=De.NoArt
AND c1.NoClient = Cl.NoClient
GROUP BY NoArt
HAVING COUNT(De.NoArt)>1
)
and ar.NoArt in (
SELECT DISTINCT De.NoArt
FROM détailCmde AS De,
commande AS Co,
client AS Cl ,
article AS AR
WHERE De.NoCmde=Co.NoCmde
AND Cl.NoClient=Co.NoClient
AND Ar.NoArt=De.NoArt
AND c2.NoClient = Cl.NoClient
GROUP BY NoArt
HAVING COUNT(De.NoArt)>1
)
and c1.NoClient != c2.NoClient
GROUP BY ar.NoArt
LIMIT 0, 30;
Marsh Posté le 31-05-2005 à 17:55:27
ali0baba a écrit : il suffit juste de regarder si le produit a ete commander par 2 client differents |
J'ai testé ta solution mais cela ne me donne aucun resultat.
Voila ce que j'ai reussi par faire:
SELECT Ar.NoArt,désignation
FROM
(SELECT DISTINCT NoArt,Co.NoClient FROM détailcmde As De , commande AS Co WHERE De.NoCmde=Co.NoCmde ) AS X,article As Ar WHERE X.NoArt=Ar.NoArt GROUP BY NoArt HAVING COUNT(X.NoArt)>1
Ce qui me donne:
Enregistrements: 5
NoArt désignation
A2 Fraise
A3 Pomme
A4 Lamborghini
A5 Citron
A6 Poisson
En fait j'ai d'abord trié les articles par client et ensuite j'ai recherché ceux que j'avais au moins 2 fois,ca me semble juste ...
Marsh Posté le 02-06-2005 à 02:14:24
je veux seulement savoir le rôle de l'alias X que tu as fait d'aprés ce que j'ai compris X.NoArt ça ve dire le numéro d'article d'une commande qu'étais fait avec un client? c'est ça COD57 réponds moi si tu peux
Marsh Posté le 02-06-2005 à 20:44:04
Toti2006 a écrit : je veux seulement savoir le rôle de l'alias X que tu as fait d'aprés ce que j'ai compris X.NoArt ça ve dire le numéro d'article d'une commande qu'étais fait avec un client? c'est ça COD57 réponds moi si tu peux |
en fait l'alias me permet de selectionner les articles commandés par differents clients ce qui permet lors de commande multiple d'un meme produit par un meme client de ne pas le comptabiliser plusieur fois et apres je regarde dans cette table les produits commandé plusieurs fois.
Merci pour ton interé à mon probleme
Marsh Posté le 31-05-2005 à 13:30:56
Bonjour à tous,
Me re-voici avec mon TP:
Je dois ecrire la requete suivante:
Numéro et désignation des articles commandés par au moins deux clients différents.
j'ai ecris ca:
SELECT DISTINCT De.NoArt,désignation FROM détailCmde AS De,commande AS Co,client AS Cl ,article AS AR WHERE De.NoCmde=Co.NoCmde AND Cl.NoClient=Co.NoClient AND Ar.NoArt=De.NoArt GROUP BY NoArt HAVING COUNT(De.NoArt)>1 LIMIT 0, 30;
Qui me donne ca:
NoArt désignation
A2 Fraise
A3 Pomme
A4 Lamborghini
A5 Citron
A6 Poisson
le probleme c'est que je ne fait que je ne tiens pas compte des clients ayant commandé plusieurs fois le meme articles et je ne vois pas vraiment comment faire pour integrer cette donnée.
Merci d'avance