Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2605 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Pb de requete SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb de requete SQL

n°1091571
cod57
Posté le 21-05-2005 à 13:27:08  profilanswer
 

Bonjour,
 
Voila j'aurai besoin d'un petit conseil pour une requete SQL j'ai une base de donnée remplie comme ca:
 
http://pierreetdecor.free.fr/TEST/TABLE%20TP.jpg
 
On me demande d'écrire la requete suivante:
 
Numéro et nom des clients ayant commandé tous les articles de couleur ‘rouge’.
 
J'arrive à trouver les clients qui on commandé au moins un article 'rouge':
 
 SELECT DISTINCT Cl.NoClient,Cl.nomClient FROM client AS Cl,détailCmde AS De,commande AS Co,article AS Ar WHERE Cl.NoClient=Co.NoClient AND De.NoCmde=Co.NoCmde AND Ar.NoArt=De.NoArt AND De.NoArt IN (SELECT NoArt FROM article WHERE Couleur = 'rouge')  
 
qui me donne:
 
NoClient  nomClient  
101         Dupond
102         Durand
103         Pierre
 
Mais je n'ai pas d'idée pour tous les articles'rouge'
 
Si qqu'un avait une idée...
 
 :whistle:

mood
Publicité
Posté le 21-05-2005 à 13:27:08  profilanswer
 

n°1091577
tomtom41
It's not a bug, it's a feature
Posté le 21-05-2005 à 13:33:04  profilanswer
 

il faut prendre le probleme à l'envers.
 
Numéro et nom des clients ayant commandé au moins un article de couleur autre que rouge  :hello:
 
et ensuite tu prends le complément


Message édité par tomtom41 le 21-05-2005 à 13:33:22
n°1091581
tomtom41
It's not a bug, it's a feature
Posté le 21-05-2005 à 13:37:05  profilanswer
 

pour le complément SELECT * FROM table NOT IN ( SELECT * FROM...);

n°1091584
Beegee
Posté le 21-05-2005 à 13:42:49  profilanswer
 

Ca marchera pas, ça, ça va ressortir les clients ayant acheté que des articles rouges ... et pas ceux qui les ont tous achetés :)
 
Il faut compter le nombre d'articles distincts rouges, par client, et comparer au nombre total d'articles distincts rouges.
 

Code :
  1. SELECT Cl.NoClient, Cl.nomClient, COUNT(DISTINCT Ar.NoArt)
  2. FROM client AS Cl,
  3.      détailCmde AS De,
  4.      commande AS Co,
  5.      article AS Ar
  6. WHERE Cl.NoClient=Co.NoClient
  7. AND De.NoCmde=Co.NoCmde
  8. AND Ar.NoArt = De.NoArt
  9. AND De.Couleur = 'rouge'
  10. GROUP BY Cl.NoClient, Cl.nomClient
  11. HAVING COUNT(DISTINCT Ar.NoArt) =
  12.     (SELECT COUNT(NoArt) FROM article
  13.      WHERE Couleur = 'rouge');


Message édité par Beegee le 21-05-2005 à 13:46:55
n°1091609
tomtom41
It's not a bug, it's a feature
Posté le 21-05-2005 à 14:15:57  profilanswer
 

Beegee a écrit :

Ca marchera pas, ça, ça va ressortir les clients ayant acheté que des articles rouges ... et pas ceux qui les ont tous achetés :)
 
Il faut compter le nombre d'articles distincts rouges, par client, et comparer au nombre total d'articles distincts rouges.
 

Code :
  1. SELECT Cl.NoClient, Cl.nomClient, COUNT(DISTINCT Ar.NoArt)
  2. FROM client AS Cl,
  3.      détailCmde AS De,
  4.      commande AS Co,
  5.      article AS Ar
  6. WHERE Cl.NoClient=Co.NoClient
  7. AND De.NoCmde=Co.NoCmde
  8. AND Ar.NoArt = De.NoArt
  9. AND De.Couleur = 'rouge'
  10. GROUP BY Cl.NoClient, Cl.nomClient
  11. HAVING COUNT(DISTINCT Ar.NoArt) =
  12.     (SELECT COUNT(NoArt) FROM article
  13.      WHERE Couleur = 'rouge');



 
ah merde j'avais mal compris la question alors  :D  

n°1091651
cod57
Posté le 21-05-2005 à 15:30:36  profilanswer
 

Vous etes trop fort!(comme à chaque fois)
Merci à tous pour vos reponses
J'vais pouvoir aller en we l'esprit tranquile ;-)
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Pb de requete SQL

 

Sujets relatifs
pb requete[MySQL] Question sur les dates et sur 1 requete SQL
pb requete help me:)requete SQL qui ne marche pas
requete sql sous c++ builder6Aide pour Optimiser requête SQL
"VIDER" une base SQL 
Plus de sujets relatifs à : Pb de requete SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR