J'ai eu ce qui suit Je veux obtenir une date avec tous ses participants en tant que tableau. Par exemple: p> donc j'ai créé la requête suivante: p> mais il en résulte: P> < Pré> xxx pré> Comment combiner ces lignes en une rangée avec tous ses user_ids en tant que participants? strong> p> p> P> postgreSQL code> Tables:
3 Réponses :
Vous pouvez faire de tels:
select dates.id, dates.start, dates.end, json_build_array( select user_id from date_participants where date_id = dates.id ) as participants from dates
Vous pouvez utiliser quelque chose comme: em> p > array_agg (user_id) code> dans le cadre de votre instruction SELECT pour agréger tout votre participant à un tableau.
Comme il s'agit de l'agrégation et que le résultat doit être produit dans une ligne, vous devez utiliser le groupe
par code> ainsi que dans votre requête
SELECT
d.id,d.start,d.end,
array_agg(dp.user_id) as participants
FROM
dates d, date_participants dp
WHERE d.id=dp.date_id AND d.ground_event_id = 252
group by d.id,d.start,d.end;
. . Pourquoi convertissez-vous la valeur en texte? Et avez-vous entendu parler de rejoindre code>?
@Gordonlinoff merci pour vos commentaires. En fait, cela n'a pas besoin. Réponse mise à jour.
J'ai une requête de travail avec l'aide de l'agrégat:
SELECT dates.id, dates.start, dates.end, array_agg(date_participants.user_id) as participants FROM dates, date_participants WHERE dates.id = date_participants.date_id AND dates.ground_event_id = 252 GROUP BY dates.id;
1. Veuillez nous montrer les données d'exemple. Seul le résultat n'est pas vraiment utile. 2. Il semble que vous souhaitiez créer un objet JSON avec une matrice JSON. Pas un tableau simple. Est-ce correct?