J'ai une table des ligues de basketball, une table des équipes et une table des joueurs comme ceci :
LIGUES
ID | NOM |
------------------
1 | NBA |
2 | ABA |
ÉQUIPES :
ID | NOM | ID_LIGUE
------------------------------
20 | BULLS | 1
21 | KNICKS | 2
JOUEURS :
ID | ID_ÉQUIPE | PRÉNOM | NOM |
---------------------------------------------
1 | 21 | John | Starks |
2 | 21 | Patrick | Ewing |
Étant donné un ID de Ligue, je voudrais récupérer tous les noms des joueurs et leur ID d'équipe de toutes les équipes de cette ligue, alors je fais ceci :
SELECT t.id AS team_id, p.id AS player_id, p.first_name, p.last_name
FROM teams AS t
JOIN players AS p ON p.team_id = t.id
WHERE t.league_id = 1
ce qui renvoie :
[0] => stdClass Object
(
[team_id] => 21
[player_id] => 1
[first_name] => John
[last_name] => Starks
)
[1] => stdClass Object
(
[team_id] => 21
[player_id] => 2
[first_name] => Patrick
[last_name] => Ewing
)
+ environ 500 autres objets...
Comme je vais utiliser ce résultat pour peupler un menu déroulant pour chaque équipe contenant la liste des joueurs de chaque équipe, je voudrais regrouper mon résultat par ID d'équipe, afin que la boucle pour créer ces menus déroulants ait seulement à parcourir chaque ID d'équipe au lieu de tous les 500+ joueurs à chaque fois.
Mais lorsque j'utilise le GROUP BY comme ceci :
SELECT t.id AS team_id, p.id AS player_id, p.first_name, p.last_name
FROM teams AS t
JOIN players AS p ON p.team_id = t.id
WHERE t.league_id = 1
GROUP BY t.id
cela ne renvoie qu'un joueur de chaque équipe comme ceci, écrasant tous les autres joueurs de la même équipe en raison de l'utilisation des mêmes noms de colonnes.
[0] => stdClass Object
(
[team_id] => 21
[player_id] => 2
[first_name] => Patrick
[last_name] => Ewing
)
[1] => stdClass Object
(
[team_id] => 22
[player_id] => 31
[first_name] => Shawn
[last_name] => Kemp
)
etc...
Je voudrais obtenir quelque chose comme ceci :
[0] => stdClass Object
(
[team_id] => 2
[player_id1] => 1
[first_name1] => John
[last_name1] => Starks
[player_id2] => 2
[first_name2] => Patrick
[last_name2] => Ewing
+10 autres joueurs de cette équipe...
)
+25 autres équipes...
Est-ce possible d'une manière ou d'une autre ?