我試圖加入兩個表(購買和購買屬性),然後根據連接進行分組,但是在連接期間生成NULL值,因爲並非表A中的每個條目都具有對應的「屬性'在表B - 這然後殺死我的'組'。分組存在NULL條目
我的實際執行情況比這更復雜,但這裏是什麼,我想實現一個修整的概念:
我有以下表格:
採購:
|purchase_id | products_id | qty |
| 1 | 10 | 100 |
| 2 | 11 | 100 |
| 3 | 10 | 300 |
| 4 | 12 | 50 |
purchase_attributes :
|purchase_attributes_id | purchase_id | options_id |
| 1 | 1 | 5 |
| 2 | 3 | 5 |
| 3 | 4 | 5 |
現在,我的目標是c根據options_id來分組特定產品的總數。 所以,我有以下SQL:
select products_id, options_id, SUM(qty)
from purchases
left join purchase_attributes using(purchase_id)
group by products_id, options_id
這對於在purchase_id在purchase_attributes表中列出的所有的情況下,工作然而,對於purchase_id 2,它不會出現在purchase_attributes的情況下,它不顯示在我的結果集中。
示例結果集:
| products_id | options_id | SUM(qty) |
| 10 | 5 | 400 |
| 12 | 5 | 50 |
不過,我想收到以下結果集:
| products_id | options_id | SUM(qty) |
| 10 | 5 | 400 |
| 11 | NULL | 100 |
| 12 | 5 | 50 |
我已經嘗試了一些東西,包括集團內合併通過和聯盟(荷蘭國際集團)兩個選擇語句在一起,但我似乎無法得到正確的結果。
任何想法?提前致謝。
可能'GROUP BY isnull(products_id,-1)'工作? –
如果您在purchase.purchase_id = purchase_attributes.purchase_id上使用左連接purchase_attributes更改左連接,則可能會看到不同的結果。這是因爲新的連接語法與如何與空值形成比較有一些警告。如果您刪除了總和列,只進行了連接,您是否看到purchase_id = 2的空條目? – dash