Bonjour,

je découvre le php et je suis face à un problème de noms de colonnes doublons.

Je souhaiterai récupérer le retour d'une commande sql contenant plusieurs join vers la même table.
Cela veut dire que les noms des colonnes seront donc les même?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$Hierarchie = $BaseDeDonnees->prepare('SELECT *
    FROM
      Hierarchie
      LEFT JOIN Pouvoirs AS pvr1 ON (pvr1.id = Hierarchie_Pouvoir1)
      LEFT JOIN Pouvoirs AS pvr2 ON (pvr2.id = Hierarchie_Pouvoir1)
      LEFT JOIN Pouvoirs AS pvr3 ON (pvr3.id = Hierarchie_Pouvoir3)
      LEFT JOIN Pouvoirs AS pvr4 ON (pvr4.id = Hierarchie_Pouvoir4)
      LEFT JOIN Pouvoirs AS pvr5 ON (pvr5.id = Hierarchie_Pouvoir5)
      LEFT JOIN Pouvoirs AS pvr6 ON (pvr6.id = Hierarchie_Pouvoir6)
    WHERE
      Hierarchie_Nom = ?'); 
$Hierarchie->bindValue(1, $JoueursData[Joueur_Superieur], PDO::PARAM_STR);
$Hierarchie->execute();
$HierarchieData = $Hierarchie->fetch();
$Hierarchie->closeCursor();
Je peux utiliser $Hierarchie[Hierarchie_Nom] mais impossible de préciser que je veux celui de pvr2 ?!

Il semble qu'il faille utiliser des alias dans le SELECT ?!
Il faudrait donc que je retape les X colonnes dedans ?!
Genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$Hierarchie = $BaseDeDonnees->prepare('SELECT
      pvr1.nom AS pvr1_nom,
      pvr2.nom AS pvr2_nom,
      ...
    FROM
      Hierarchie
      LEFT JOIN Pouvoirs AS pvr1 ON (pvr1.id = Hierarchie_Pouvoir1)
      LEFT JOIN Pouvoirs AS pvr2 ON (pvr2.id = Hierarchie_Pouvoir1)
      LEFT JOIN Pouvoirs AS pvr3 ON (pvr3.id = Hierarchie_Pouvoir3)
      LEFT JOIN Pouvoirs AS pvr4 ON (pvr4.id = Hierarchie_Pouvoir4)
      LEFT JOIN Pouvoirs AS pvr5 ON (pvr5.id = Hierarchie_Pouvoir5)
      LEFT JOIN Pouvoirs AS pvr6 ON (pvr6.id = Hierarchie_Pouvoir6)
    WHERE
      Hierarchie_Nom = ?'); 
$Hierarchie->bindValue(1, $JoueursData[Joueur_Superieur], PDO::PARAM_STR);
$Hierarchie->execute();
$HierarchieData = $Hierarchie->fetch();
$Hierarchie->closeCursor();
Mais cela semble ultra galère car j'ai beaucoup de colonnes...

Ou faut il que je crée plusieurs appels à la base de données ?
Genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$pvr1 = $BaseDeDonnees->prepare('
    SELECT *
    FROM
      Hierarchie
      LEFT JOIN Pouvoirs ON (Pouvoirs.id = Hierarchie_Pouvoir1)
    WHERE
      Hierarchie_Nom = ?
      '); // Préparation de la requete sql
$pvr1->bindValue(1, $JoueursData[Joueur_Superieur], PDO::PARAM_STR);
$pvr1->execute();
$pvr1Data = $pvr1->fetch(); 
$pvr1->closeCursor();
 
$pvr2 = $BaseDeDonnees->prepare('
    SELECT *
    FROM
      Hierarchie
      LEFT JOIN Pouvoirs ON (Pouvoirs.id = Hierarchie_Pouvoir2)
    WHERE
      Hierarchie_Nom = ?
      '); // Préparation de la requete sql
$pvr2->bindValue(1, $JoueursData[Joueur_Superieur], PDO::PARAM_STR);
$pvr2->execute();
$pvr2Data = $pvr2->fetch(); 
$pvr2->closeCursor();
 
$pvr3 = $BaseDeDonnees->prepare('
    SELECT *
    FROM
      Hierarchie
      LEFT JOIN Pouvoirs ON (Pouvoirs.id = Hierarchie_Pouvoir3)
    WHERE
      Hierarchie_Nom = ?
      '); // Préparation de la requete sql
$pvr3->bindValue(1, $JoueursData[Joueur_Superieur], PDO::PARAM_STR);
$pvr3->execute();
$pvr3Data = $pvr3->fetch(); 
$pvr3->closeCursor();
Ai je raté quelque chose ?

Car cela me semble vraiment pas adapté... sql permet de préciser la table mais pas php ?

Merci à vous et bonne journée à vous !