Ceci est une question de suivi à mon dernier Find all matches for given team in PostgreSQL.PostgreSQL Trouver tous les résultats pour donné joueur
Voici ma structure de données. J'ai players
uuid | first_name | last_name
-----| -----------| ---------
... | hard | hitter
... | big | blocker
... | super | setter
Deux joueurs forment une équipe dans mon teams
tableau
uuid | player_1_uuid | player_2_uuid
-----|---------------|--------------
729..| f432f7bc-63...| e022ccb6-7...
d0f..| c9548a8e-b7...| a28441cb-2...
... | ... | ...
Et deux équipes jouent les uns contre les autres dans un match stocké dans ma table matches
.
uuid | name | team_a_uuid | team_b_uuid
-----|------|-------------|------------
d7e..| foo | 5db46a15-...| 82732895-..
334..| bar | 75ab1a39-...| 9fcedf80-..
... | ... | ... | ...
Dans ma question précédente, j'ai demandé à obtenir une équipe et tous les UUID match qu'il a joué dans Voici une solution
select t.*,
(select array_agg(m.uuid)
from matches m
where t.uuid in (m.team_a_uuid, m.team_b_uuid)
) as match_uuids
from teams t;
Maintenant, je voudrais aller un peu plus loin. Donnez moi un joueur et le match uuids il a joué. C'est un peu plus compliqué parce que nous devons obtenir les équipes d'abord, puis les matches. Je voudrais obtenir quelque chose comme ceci
uuid | first_name | last_name | team_uuids | match_uuids
-----| -----------| ----------|---------------|---------------
... | hard | hitter | {'...', '...'}| {'...', '...'}
... | big | blocker | {'...', '...'}| {'...', '...'}
... | super | setter | {'...', '...'}| {'...', '...'}
Des idées?
Cela fonctionne :) Merci! Je reçois des UUID en double dans 'team_uuids'. Est-ce que 'array_agg (teams.uuid distinct) AS team_uuids' est le bon moyen de supprimer les doublons? – zemirco
@zemirco, oui 'array_agg (distinct teams.uuid)' supprimera les doublons (et triera les uuids en passant). Je suis heureux d'avoir pu aider. – Adam
@zemirco. . . Je me réjouis de votre prochaine question où vous demandez comment obtenir ce retour dans un laps de temps limité. –