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