Besoin d'aide pour requête SQL (jointure)

Fermé
bxnpower Messages postés 4 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 14 novembre 2008 - 24 juin 2008 à 14:31
 doudi - 24 juin 2008 à 15:21
Besoin d'aide pour requête SQL (jointure)
Bonjour,
Voila en fait j’aurais voulu avoir un peut d’aide pour ma requête qui a pour but de recueillir une multitude d’information. Dans un premier temps je n’arrivais pas à la faire fonctionner, j’ai donc cherché un bon moment, puis j’ai réussi en lançant deux requêtes différentes, seulement pour plus de clarté j’aurai aimé la réunir en une seule requête, et je suis persuader que ceci est possible, mais du fait de mon manque d’expérience sur mysql je galère un peut.
C’est pour cela que j’aurais aimé que vous m’éclairiez un peut sur la requête.

Voici la constitution de mes tables :

Table imgliendossier
Champ : IdDossier ; NomDossier

Table imgpages
Champ : IdImgPages ; ImgPages ; ImgRollOver ; LienImgPages ; IdDossier ; ImgTOP ; ImgLEFT ; ImgWidth ; ImgHeight ; IdPages

Table pages
Champ : IdPages ; NomPages ; SousPages ; LienDossier

Résultat cherché : Obtenir les champs NomDossier ; ImgPages ; ImgRollOver ; LienImgPages ; ImgTOP ; ImgLEFT ; ImgWidth ; ImgHeight Avec pour filtre IdPages= ‘3’ par exemple

Solution trouvé (mais pas très très bonne je pence) :
$RequêteImg="Select * from imgpages, imgliendossier where imgliendossier.IdDossier=imgpages.IdDossier and IdPages='".$IdImg."'";
$RésultatImg=mysql_query($RequêteImg);
$LigneImg=mysql_fetch_array($RésultatImg);

$RequêteImg2="Select * from pages where IdPages='".$IdImg."'";
$RésultatImg2=mysql_query($RequêteImg2);
$LigneImg2=mysql_fetch_array($RésultatImg2);

Autre solution que j’aurais aimé et pensée bonne mais qu’il ne l’est pas :
$RequêteImg="Select * from imgpages, imgliendossier, pages where imgliendossier.IdDossier=imgpages.IdDossier and pages.IdPages=imgpages.IdPages and IdPages='".$IdImg."'";
$RésultatImg=mysql_query($RequêteImg);
$LigneImg=mysql_fetch_array($RésultatImg);


Merci Pour votre aide

5 réponses

Voici une proposition :

Select NomDossier,ImgPages,ImgRollOver,LienImgPages,ImgTOP,ImgLEFT,ImgWidth,ImgHeight
FROM imgliendossier d,imgpages i
where d.IdDossier = i.IdDossier
And IdPages= ‘3’;

Si la requête te retourne plusieurs lignes ,tu devras boucler.
0
Merci pour ta réponse, seulement je crois que tu à oublier le champ "LienDossier" de la table "Pages" et c'est la ou je bloque =/
0
Voila,

Select NomDossier,ImgPages,ImgRollOver,LienImgPages,ImgTOP,ImgLEFT,ImgWidth,ImgHeight,LienDossier
FROM imgliendossier d,imgpages i,pages p
where d.IdDossier = i.IdDossier and p.idPages =i.idPages
And i.IdPages= ‘3’;
0
bxnpower Messages postés 4 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 14 novembre 2008 1
24 juin 2008 à 15:19
c'est parfait ! merci beaucoup, je viens de comprendre mon erreur, je n'avais pas mi le nom de la table a la fin :

"table".IdPages='3'

Merci pour ton aide =)
0

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

Posez votre question
Oui c'est une erreur courante, mysql génère une erreur car le champ est ambigue.
0