我試圖join
2表(即使沒有匹配第二table
我想要帶來的結果)。Group By +左外部加入Sqlite
所以我認爲我可以解決問題使用LEFT OUTER JOIN
,但出於某種原因,我無法做到這一點。
這裏的模式:
entry_types
表:
ID NAME
---------- ----------
1 entry_type1
2 entry_type2
entries
表:
ID VALUE ENTRY_TYPE_ID DATE
---------- ---------- -------------- ----------
1 55.5 1 2016-09-18T17:46:27.398Z
2 84.21 2 2016-09-18T18:41:54.142Z
3 144.5 2 2016-09-19T01:13:51.099Z
4 150.7 1 2016-07-17T19:28:12.026Z
展望模式上面的我們可以暗示我在9月份有entry_types
的發生,但是在7月份我只有一個entry_type
。
那麼,我想要什麼?
- 我想要檢索總是兩個
entry_types
,並且,當然,設置0到不存在的entry_type
(如果有一個)。
下query
我試圖如下:
SELECT et.name as entry_type,
SUM(CASE WHEN en.value IS NULL THEN 0 ELSE en.value END) as total
FROM entries en
LEFT OUTER JOIN entry_types et
ON en.entry_type_id = et.id
WHERE STRFTIME('%m', en.date) = 'SOME MONTH'
GROUP BY en.entry_type_id
的預期的結果:
如果我通過搜索 '九':
NAME TOTAL
---------- ----------
entry_type1 55.5
entry_type2 228.71
如果我按'July'搜索:
NAME TOTAL
---------- ----------
entry_type1 150.7
entry_type2 0
在此先感謝。任何幫助將不勝感激。
它的工作。非常感謝 :) –