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?
Je peux utiliser $Hierarchie[Hierarchie_Nom] mais impossible de préciser que je veux celui de pvr2 ?!
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();
Il semble qu'il faille utiliser des alias dans le SELECT ?!
Il faudrait donc que je retape les X colonnes dedans ?!
Genre :
Mais cela semble ultra galère car j'ai beaucoup de colonnes...
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();
Ou faut il que je crée plusieurs appels à la base de données ?
Genre :
Ai je raté quelque chose ?
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();
Car cela me semble vraiment pas adapté... sql permet de préciser la table mais pas php ?
Merci à vous et bonne journée à vous !
Partager