我正在嘗試獲取用戶串列以及 Postgres 中相關季節的串列。它們連接到資料透視表。
我完全不知道如何進行查詢。我知道在查詢中加入所有 3 個表將回傳我需要的所有行,所以從技術上講,我可以使用 JavaScript 執行 array.reduce,但我認為正確的查詢可能更有效。
有任何想法嗎?
表:
用戶
| ID | 姓名 |
|---|---|
| 1 | 杰克 |
| 2 | 亞當 |
季節
| ID | 姓名 |
|---|---|
| 1 | 落下 |
| 2 | 春天 |
user_season
| 用戶身份 | 季節ID |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
期望的輸出
發送到前端:
| 用戶身份 | 用戶名 | 季節 |
|---|---|---|
| 1 | 杰克 | [{名稱:“秋天”,id:1},{名稱:“春天”,id:2}] |
| 2 | 亞當 | [{名稱:“春天”,id:2}] |
uj5u.com熱心網友回復:
這是使用的一種方法STRING_AGG:
SELECT u.id AS user_id, u.name AS user_name,
'[' || STRING_AGG('{ "name": "' || s.name || '", "id":' || s.id ||
'}', ', ') || ']' AS seasons
FROM users u
LEFT JOIN user_season us ON us.user_id = u.id
LEFT JOIN seasons s ON s.id = us.season_id
GROUP BY u.id, u.name
ORDER BY u.id;

演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/446055.html
標籤:sql PostgreSQL
下一篇:在列中顯示前10個出現的值
