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

bxnpower Messages postés 4 Statut Membre -  
 doudi -
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
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. doudi
     
    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
  2. bxnpower
     
    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
  3. doudi
     
    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
  4. bxnpower Messages postés 4 Statut Membre 1
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

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