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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [debutant] aide solution de requetes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[debutant] aide solution de requetes

n°1031484
mehdi_tn
Posté le 31-03-2005 à 17:13:42  profilanswer
 

salut tout le monde je debute en sql et j'ai fait quelques 50 requetes en exercices mais il me reste 4 que je n'ai pu trouver la solution si vous pouvez m'aider un peu en me donnant l'idée de l'ecriture de la requete ou un ptit code ressemblant Merci :
 
schema:
U(NU,NomU,Ville)
P(NP,NomP,Couleur,Poids)
F(NF,NomF,Statut,Ville)
PUF(#NP,#NU,#NF,Quantite)
 
Les requetes :
 
1)Donner les numeros des fournisseurs qui approvisionnent à la fois les usines N1 et N2
 
2)Donner les numeros des produits qui sont livrés à toutes les usines de Londres
 
3)Donner les numeros de fournisseurs qui approvisionnent toutes les usines avec un meme produit
 
voila les requete que j'ai ecrite et qui biensure ne donnent pas le resultat voulu :
 
1)

Code :
  1. SELECT nf FROM puf WHERE
  2. nu IN (1,2)
  3. GROUP BY nf
  4. HAVING COUNT(*) = 2 ;


 
2)

Code :
  1. select np from puf where
  2.   nu=all(select distinct nu from u where u.ville='Londres');


 
3) je n'ai pas trouvé par ou commencer  
 
Je travaille sous oracle 9i
 
Merci beaucoup de votres aide !!

mood
Publicité
Posté le 31-03-2005 à 17:13:42  profilanswer
 

n°1032741
yeyeyo
http://www.labo-oracle.com
Posté le 01-04-2005 à 19:48:52  profilanswer
 

Salut Mehdi,
je vais essayer de répondre à tes questions mais j'ai pas vraiment moyen de vérifier alors je te promets rien.
 
1)

Code :
  1. SELECT nf FROM puf WHERE
  2. nu IN (1,2)
  3. GROUP BY nf
  4. HAVING COUNT(*) = 2 ;


 
voila:

Code :
  1. SELECT nf
  2. FROM puf
  3. WHERE nu =ALL(1,2); --A condition que tes identifiants des usines N1 et N2 soient bien 1 et 2


 
2)

Code :
  1. select np from puf where
  2.   nu=all(select distinct nu from u where u.ville='Londres');


 
voila:

Code :
  1. SELECT DISTINCT np
  2. FROM puf
  3. WHERE nu IN(SELECT nu FROM u WHERE ville='Londres');


 
3)
 
et voila

Code :
  1. SELECT nf
  2. FROM puf
  3. HAVING COUNT(DISTINCT np)=1
  4. GROUP BY nf;


 
Alors pour la dernière, chui vraiment pas sur. Pas au niveau logique mais au niveau syntaxe, je sais pas si on peut mettre distinct ds un count.
Je reviendrai te donner confirmation

n°1032977
mehdi_tn
Posté le 02-04-2005 à 02:40:38  profilanswer
 

merci beaucoup il est un peu tard pour verifier tous ca  :sleep:  2m1 matin alors ;)  
en regardant bien si tu peux m'expliquer comment ta eu l'idee parce que pour la 1ere t'a utilisé all donc le fournisseur ne va approvisionné que les usines 1 et 2 et s'il approvisionnait d'autres à part 1 et 2 ca ne vas pas marcher je crois !!! ???
pour la deuxieme

Code :
  1. WHERE nu IN(SELECT nu FROM u WHERE ville='Londres');


ca ne veut pas dire au moins une usine de londres ca ??  
pour la derniere elle est ou la contrainte toutes les usines avec un meme produit  :??: ???
 
encore merci !!! A+  


Message édité par mehdi_tn le 02-04-2005 à 02:53:45
n°1033005
Beegee
Posté le 02-04-2005 à 08:52:56  profilanswer
 

1)Donner les numeros des fournisseurs qui approvisionnent à la fois les usines N1 et N2 :
 

Code :
  1. SELECT distinct puf1.nf
  2. FROM puf puf1, puf puf2
  3. WHERE puf1.nu = 1
  4. AND puf2.nu = 2
  5. AND puf1.nf = puf2.nf;


 
2)Donner les numeros des produits qui sont livrés à toutes les usines de Londres :
 

Code :
  1. select np, count(distinct nu)
  2. from puf
  3. group by np
  4. having count(distinct nu) = (select count(distinct nu) from u);


 
3)Donner les numeros de fournisseurs qui approvisionnent toutes les usines avec un meme produit :
 

Code :
  1. select distinct nf from (
  2. select nf, np, count(distinct nu)
  3. from puf
  4. group by nf, np
  5. having count(distinct nu) = (select count(distinct nu) from u)
  6. );


Message édité par Beegee le 02-04-2005 à 08:53:54
n°1033053
mehdi_tn
Posté le 02-04-2005 à 12:27:07  profilanswer
 

Merci Beegee de ta reponse , La requete 1 et 3 fonctionnent impec, tres bonne idee d'utiliser les count je n'y avait pas pensé, mais la 2eme ne marche pas de ja il manque where ville='Londres' dans la 2eme clause select mais ca ne marche pas com meme  :??:  
 
merci encore

n°1033077
Beegee
Posté le 02-04-2005 à 13:17:56  profilanswer
 

Pour la 2) :
 

Code :
  1. select puf.np, count(distinct puf.nu)
  2. from puf, u
  3. where puf.nu = u.nu
  4. and u.ville = 'LONDRES'
  5. group by np
  6. having count(distinct nu) = (select count(distinct nu) from u where ville = 'LONDRES');

n°1033140
mehdi_tn
Posté le 02-04-2005 à 16:00:40  profilanswer
 

merci beucoup c'est une tres bonne taktik ce count je vais l'utiliser plus souvent


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

  [debutant] aide solution de requetes

 

Sujets relatifs
Ajouter à l'aide d'un .bat des lignes ds1fichier à un endroit précisrequetes avec condition sous access
Copier noeud (debutant)Gros probleme format date, de l'aide !!!
AIDE Systeme de reservationaide programme gestion emails
Aide en javascript[Debutant][Applet][Swing]canvas+superposition image
aide sur les bouton a deux positions les "TOGGLEBUTTON"besoin d'aide sur la detection de collision
Plus de sujets relatifs à : [debutant] aide solution de requetes


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