php et sql : noms de colonnes doublons
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:
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:
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:
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 !