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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Aide pour requêtes en SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour requêtes en SQL

n°343775
Groomy
Oisif
Posté le 26-03-2003 à 13:32:46  profilanswer
 

J'ai besoin de 2 codes SQL, je suis débutant et j'avoue avoir un peu de mal sur ces deux là...  :?  
 
la base comporte les 4 quatres relations suivantes:
 
CLIENTS (NumClient cp, NomClient, Designation)
PRODUITS (NumProduit cp, Libelle, PrixBrut)
LIVRAISONS (NumProduit cp, NumClient cp, Quantité)
CATEGORIES (Designation cp, Reduction)
  cp=clé primaire
 
et voici les 2 interrogations:
 - Les noms des clients ayant été livrés de tous les produits qui n'ont jamais été livrés à des clients de catégories E.
 - Les numéros et prix des produits qui ont un prix supérieur aux prix de tous les produits livrés chez au moins 2 clients.
 
Si qql pouvait m'aider...
 
Merci

mood
Publicité
Posté le 26-03-2003 à 13:32:46  profilanswer
 

n°343855
mauvais_ka​rma
I'll be damned
Posté le 26-03-2003 à 14:41:26  profilanswer
 

Groomy a écrit :

J'ai besoin de 2 codes SQL, je suis débutant et j'avoue avoir un peu de mal sur ces deux là...  :?  
 
la base comporte les 4 quatres relations suivantes:
 
CLIENTS (NumClient cp, NomClient, Designation)
PRODUITS (NumProduit cp, Libelle, PrixBrut)
LIVRAISONS (NumProduit cp, NumClient cp, Quantité)
CATEGORIES (Designation cp, Reduction)
  cp=clé primaire
 
et voici les 2 interrogations:
 - Les noms des clients ayant été livrés de tous les produits qui n'ont jamais été livrés à des clients de catégories E.
 - Les numéros et prix des produits qui ont un prix supérieur aux prix de tous les produits livrés chez au moins 2 clients.
 
Si qql pouvait m'aider...
 
Merci


 
C'est tes devoir pour demain ?
 
Attend je reflechi...
 
EDIT : c tres tordu comme requete !
la premiere je pige pas  :pt1cable:  
la deuxieme aussi est bizarre


Message édité par mauvais_karma le 26-03-2003 à 14:46:50
n°343860
polo021
Posté le 26-03-2003 à 14:48:31  profilanswer
 

Mauvais_Karma a écrit :


 
C'est tes devoir pour demain ?
 
Attend je reflechi...
 
EDIT : c tres tordu comme requete !
la premiere je pige pas  :pt1cable:  
la deuxieme aussi est bizarre


 
 
ou alors.... les profs devraient toujours penser a empecher l'acces au net pendant les interrogations
 
 
c'est vrai que c'est tordu, j'ai commence a reflechir aussi mais bon pas facile comme ca

n°343862
MagicBuzz
Posté le 26-03-2003 à 14:49:01  profilanswer
 

facile comme tout toutes les deux.
 
si j'ai 5 minutes, je vous réponds. mais là j'ai trio de taff, je ne fais que passer.

n°343882
guiotv2
Posté le 26-03-2003 à 14:58:29  profilanswer
 

SELECT NomClient
FROM CLIENTS (CL), PRODUITS (P), LIVRAISONS (L), CATEGORIES (CA)
WHERE CL.NumClient = L.NumClient;
AND   L.NumProduit = P.NumProduit;
AND   CA.Designation = CL.Designation;
AND   CA.Designation != 'E';
AND   P.Libelle = *;
 
* pour dire all
!= pour dire different
 
Pour la 1, explication : premierement on fait des liens entre chaque table car elle nous sera tous utils.
Ensuite on fais des filtres en fonction des donnés...
 
PS : c'est pas forcement juste mais comme cela que j'aurais fais.

n°343889
Serial Cod​er
Posté le 26-03-2003 à 15:00:12  profilanswer
 

:hello:
 
Je connais la réponse, mais il faut que tu me dises si c'est pour un devoir ou non (discrétion oblige ;))


---------------
Je code en série et en parallèle
n°343898
MagicBuzz
Posté le 26-03-2003 à 15:03:45  profilanswer
 

1)
 

SELECT DISTINCT CLIENTS.NomClient FROM CLIENTS, LIVRAISONS, (SELECT PRODUITS.NumProduit FROM PRODUITS WHERE PRODUITS.NumProduit NOT IN (SELECT PRODUITS.NumProduit FROM PRODUITS, LIVRAISONS, CLIENTS WHERE CLIENTS.Designation = 'E' AND LIVRAISONS.NumClient = CLIENTS.NumClient AND PRODUITS.NumProduit = LIVRAISONS.NumProduit)) AS TMP WHERE CLIENTS.NumClient = LIVRAISONS.NumClient AND LIVRAISONS.NumProduit = TMP.NumProduits


 
Tout simple.
 
PS: j'ai fais exprès d'écrire ça comme un gros porc. Si c'est pour un devoir, c'est la bulle assurée. Si c'est sérieux et pour ton job, alors ça marche sous Oracle 8i et SQL Server 2000 (les autres SGBD, je sais pas, mais ça ne fonctionne pas sur les versions antérieures de ces deux-là)

n°343899
MagicBuzz
Posté le 26-03-2003 à 15:05:34  profilanswer
 

guiotv2 a écrit :

SELECT NomClient
FROM CLIENTS (CL), PRODUITS (P), LIVRAISONS (L), CATEGORIES (CA)
WHERE CL.NumClient = L.NumClient;
AND   L.NumProduit = P.NumProduit;
AND   CA.Designation = CL.Designation;
AND   CA.Designation != 'E';
AND   P.Libelle = *;
 
* pour dire all
!= pour dire different
 
Pour la 1, explication : premierement on fait des liens entre chaque table car elle nous sera tous utils.
Ensuite on fais des filtres en fonction des donnés...
 
PS : c'est pas forcement juste mais comme cela que j'aurais fais.


Marche pas ton bidule. Et c'est encore moins compatible que ce que j'ai écrit comme code :)
 
le "*", ça marche sous kel SGBD ? Sous Oracle par exemple, le "*" est très loin de vouloir dire ça.

n°343908
MagicBuzz
Posté le 26-03-2003 à 15:10:13  profilanswer
 

Les numéros et prix des produits qui ont un prix supérieur aux prix de tous les produits livrés chez au moins 2 clients.
 

SELECT PRODUITS.NumProduit, PRODUITS.PrixBrut
FROM PRODUITS
WHERE PRODUITS.NumProduit > (SELECT MAX(PRODUITS.PrixBrut)
FROM PRODUITS, LIVRAISONS
WHERE LIVRAISONS.NumProduit = PRODUITS.NumProduit
GROUP BY LIVRAISON.NumClient
HAVING COUNT(PRODUITS.NumProduit) > 0)


 
PS: Désolé, j'arrivepas à la faire trop porc...

n°343932
guiotv2
Posté le 26-03-2003 à 15:16:46  profilanswer
 

MagicBuzz a écrit :


Marche pas ton bidule. Et c'est encore moins compatible que ce que j'ai écrit comme code :)
 
le "*", ça marche sous kel SGBD ? Sous Oracle par exemple, le "*" est très loin de vouloir dire ça.


 
J'ai bien preciser que c'etait pas forcement bon.. :)
oui, c'etait sous oracle...
C'est koi deja pour dire "all" ?

mood
Publicité
Posté le 26-03-2003 à 15:16:46  profilanswer
 

n°343939
MagicBuzz
Posté le 26-03-2003 à 15:18:53  profilanswer
 

guiotv2 a écrit :


 
J'ai bien preciser que c'etait pas forcement bon.. :)
oui, c'etait sous oracle...
C'est koi deja pour dire "all" ?


Je sais même pas ce que tu veux dire par "all" :D
 
PS: Sinon, pour le "*", j'ai confondu avec le "(+)". En fait c'est sous SQL Server que le "*" veut dire comme le "(+)" d'Oracle et que dont ta syntaxe me surprenait (avec SQL Server tu fait un left outer join si tu mets une * là)
 
Mais peut-être que sous Oracle le * veut bien dire "all". Ca sert à quoi au juste ? Ca pourrait peut-être simplifier mes requêtes des fois :d


Message édité par MagicBuzz le 26-03-2003 à 15:20:49
n°343973
Groomy
Oisif
Posté le 26-03-2003 à 15:33:29  profilanswer
 

Non, c'est pas pour un devoir. C'est pour un tp de GL, on vient de commencer SQL depuis 2 semaines  
et nous aussi on les trouve tordues les requêtes.  
 
Je vais éssayer tt ça ce soir, je n'ai pas le temps pour l'instant. Je reste tt de même ouvert à ttes nouvelles propositions...
 

n°343980
MagicBuzz
Posté le 26-03-2003 à 15:38:39  profilanswer
 

C koi la différence entre un TP et des devoirs ? :heink:
 
Je sais bien que ça fait un bout de temps que j'ai quitté l'école, mais j'ai pas souvenir de la moindre différence.
 
En tout cas, une chose est sûr, votre prof est un gros naze. J'ai jamais eu à faire un exo de ce genre en dehors d'une salle sans accès au net et hors temps limite, sinon autant donner les réponse avec, y'a toujours des malins comme toi qui font sous-traîter, c'est si facile.

n°344073
polo021
Posté le 26-03-2003 à 16:28:09  profilanswer
 

MagicBuzz a écrit :

C koi la différence entre un TP et des devoirs ? :heink:
 
Je sais bien que ça fait un bout de temps que j'ai quitté l'école, mais j'ai pas souvenir de la moindre différence.
 
En tout cas, une chose est sûr, votre prof est un gros naze. J'ai jamais eu à faire un exo de ce genre en dehors d'une salle sans accès au net et hors temps limite, sinon autant donner les réponse avec, y'a toujours des malins comme toi qui font sous-traîter, c'est si facile.


 
 
ben au moins en ayant eu la reponse et en l'ayant compris , il sera plus apte a faire ses futures requetes.
Mais il ne faut pas que ca devienne une habitude de faire sous traiter, parce que a l'exam... pas possible.
 
Mais t'inquite, les debuts en SQL c'est toujours tres difficile. Je n'ai reellement reussi a faire des requetes potables que quelques semaines avant l'examen.


Message édité par polo021 le 26-03-2003 à 16:28:53
n°344088
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-03-2003 à 16:38:56  profilanswer
 

Groomy a écrit :

Non, c'est pas pour un devoir. C'est pour un tp de GL, on vient de commencer SQL depuis 2 semaines


Ca c'est le truc qu'il fallait pas dire ! lock + TT, les nouvelles propositions tu les liras dans un précis de SQL !
 
MagicBuzz > ça crevait les yeux que c'était pour ça ! D'ou mon drapeau bleu au début, poru garder un oeil sur le topic ! C'était pas la peine de lui filer la soluce ! La prochaine fois, je te réserve le même sort !


---------------
J'ai un string dans l'array (Paris Hilton)

Aller à :
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Aide pour requêtes en SQL

 

Sujets relatifs
[SQL- ACCESS] A l'aide !!!requêtes...
Besoin d'aide pour un pb d'algo !! siouplé...[PHP/SQL] ORDER BY m'a tuer ...
SQL : 4requetes simple ou 1 de bourrin ?l aide dans dev cpp
Pas d'aide sur JBuilder 8 version personnelle[SQL] erreur dans ma requère
un peu d'aide svp 
Plus de sujets relatifs à : Aide pour requêtes en SQL


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