Problee de requete sur 3 tables

Résolu
cs_6miK Messages postés 61 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 5 avril 2011 - 7 mai 2007 à 22:21
cs_6miK Messages postés 61 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 5 avril 2011 - 10 mai 2007 à 09:42
Bonsoir,
j'aimerais faire une requête sur 3 tables différentes pour  pouvoir avoir tout les clients d'un fournisseur grâce à la table produit qui connait le numéro du client et le numero du fournisseur.
Ma 1ère requête permet de faire ceci met avec répétition et la 2ème ne garde que le nom du client.
Si quelqu'un pouvait m'aiguiller puisqu'il n'est pas possible de mettre plisieurs élément dans un distinct.
Merci d'avance

SELECT
DISTINCT
nomC




FROM
client
,
produit
,
fournisseur




WHERE
client
.
numero_client
=
produit
.
numero_client




AND
fournisseur
.
numero_fournisseur
=
produit
.
numero_fournisseur




AND
nomF
=
'xxxx'




SELECT








FROM
client
,
produit
,
fournisseur




WHERE
client
.
numero_client
=
produit
.
numero_client




AND
fournisseur
.
numero_fournisseur
=
produit
.
numero_fournisseur




AND
nomF
=
'xxxx'

8 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
8 mai 2007 à 23:27
Salut

Select client.* from fournisseur
Inner join produit
on produit.fournisseur_id = fournisseur.fournisseur_id
inner join client
on client.client_id = produit.client_id

Where fournisseur_id = 150

Avec une syntaxique inner join
1 --> la reponse doit etre correcte.
2 --> la requete est plus opimiser

car la requete au where est une requete avec un produit cartesien

Je prend tout les elements de la table A que j'associe avec ceux de la table B
--> A*B enregistrement et apres que je filtre avec le where
C'est pas trop optimisé dans cette requete

Bon SQL
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
9 mai 2007 à 20:46
Select distinct client.* from fournisseur
Inner join produit
on produit.numero_fournisseur = fournisseur.numero_fournisseur
inner join client
on client.numero_client = produit.numero_client
Where nomF = 'xxxx'

Devrait fonctionner sinon il faut utiliser des group by.

Select client.numero_client from fournisseurmer
Inner join produit
on produit.numero_fournisseur = fournisseur.numero_fournisseur
inner join client
on client.numero_client = produit.numero_client
Where nomF = 'xxxx'
GROUP BY numero_client
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
8 mai 2007 à 14:01
bonjour,

je déplace vers sqlfr.com

<hr />Cyril - MSP - MCTS ASP.net & SQL
0
cs_6miK Messages postés 61 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 5 avril 2011
9 mai 2007 à 09:39
ceci est nettement mieu car je ne recupère que ce qui concerne le client.
Mais, cela ne retire pas les répétition de client ;(
et je ne voit toujours pas comment faire puisqu'il n'est pas possible de mettre plisieurs élément dans un distinct.

Select client.* from fournisseur
Inner join produit
on produit.numero_fournisseur = fournisseur.numero_fournisseur
inner join client
on client.numero_client = produit.numero_client
Where nomF = 'xxxx'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_6miK Messages postés 61 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 5 avril 2011
10 mai 2007 à 09:18
Ca marche au poil encore merci =)
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
10 mai 2007 à 09:36
Salut

c'etait quoi le probleme ou la solution que tu as pris.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
10 mai 2007 à 09:36
Salut

c'etait quoi le probleme ou la solution que tu as pris.
0
cs_6miK Messages postés 61 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 5 avril 2011
10 mai 2007 à 09:42
Salut, j'ai choisit :

Select distinct client.* from fournisseur
Inner join produit
on produit.numero_fournisseur = fournisseur.numero_fournisseur
inner join client
on client.numero_client = produit.numero_client
Where nomF = 'xxxx'

en fait je restais borné pour le distinct.
Comme on fait distinct (nomC) par exemple, je cherchais une synthaxe du genre distinct(*)
0
Rejoignez-nous