有3個表,即items、field和field_values,如下所示。我正在根據兩個欄位items.name和field.name對記錄進行分組。我想讓sql查詢回傳items.name、sum(items.qty)和field_values.value的陣列(與分組記錄相關)。
表格中的專案
表格欄位
表field_values
。| id | value | item_idfield_id>||||
|---|---|---|---|---|---|
| 1 | office branch 1 | office branch 1 | 1 | 辦公處1 | 1 |
| 2 | |||||
| 2 | office branch 2 | office branch 2 | 2 | 辦公室2 | 1 |
| 3 | office branch 3 | office branch 3 | 1 | 1 | |
| 4 | |||||
| 4 | office branch 4 | office branch 4 | 1 | 1 | |
| 5 | office branch 5 | office branch 5 | 3 | 辦公用品分公司 | 1 |
預期:按照表field_values的資料
總數量為3的面條與第1辦事處、第3辦事處、第4辦事處相關聯
數量為1的餅干專案與第2辦公室分部相關聯
數量為1的紙張專案與第5辦公室分部相關聯
數量為1的紙張專案與第5辦公室分部相關聯
預期結果
| 名稱 | 數量 | delivery_to_branchches|
|---|---|---|
| 面條 | 3{"office branch 1", "office branch 3", "office branch 4" } | |
| 餅干 | ||
| 餅干 | 1 | {"office branch 2"}? |
| 報紙 | ||
| 報紙 | 1 | {"office branch 5"}? |
我正在運行以下的sql查詢:
SELECT
items.name,
sum(qty) as quantity,
array(
SELECT field_values.value
FROM field_values.
WHERE field_values.item_id IN (
SELECT ID FROM items
)
AND fields.name = 'branch code'AS "delivery_to_branches"
FROM[/span
專案
INNER JOIN field_values ON field_values.item_id = items.id
INNER JOIN fields ON field_values.field_id = fields.id
GROUPBY
items.name, fields.name
欄位delivery_to_branches得到了意外的結果
當我執行上述Sql查詢時,我得到了正確的名稱和數量的值,但陣列的值顯示delivery_to_branches不正確。希望得到任何幫助,謝謝你!
| 名稱 | 數量 | delivery_to_branchches|
|---|---|---|
| 面條 | 3{"office branch 1", "office branch 2", "office branch 3", "office branch 4", "office branch 5"} | 。|
| 餅干 | ||
| 餅干 | 1 | {"辦事處1", "辦事處2", "辦事處3", "辦事處4", "辦事處5"} |
| 報紙 | ||
| 報紙 | 1 | {"office branch 1", "office branch 2", "office branch 3", "office branch 4", "office branch 5"}{/td |
uj5u.com熱心網友回復:
我認為你只需要在外層查詢中使用array_agg(),并加上一個過濾器:
SELECT i.name,
SUM(qty) as quantity,
ARRAY_AGG(fv.value) FILTER (WHERE f.name = 'branch code') as delivery_to_branches
FROM items i JOIN.
欄位_值 fv
ON fv.item_id = i.id join
欄位f
ON fv.field_id = f.id
GROUP BY i.name;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/324749.html
標籤:
