我有两个表:
表“ DATES”包含天数:
select * from dates;
click_date
------------
2019-08-14
2019-08-04
2019-07-24
表“点击次数”包含日期,点击次数,点击次数:
select date,clicker,click_count
from Clicks;
date | clicker | click_count
-----------------------------------
2019-08-04 | 3422 | 2
2019-07-24 | 3539 | 7
我需要获取所有日期的所有clicker和click_count:
date | clicker | click_count
------------------------------------
2019-08-04 | 3422 | 2
2019-08-14 | 3422 | 0
2019-07-24 | 3422 | 0
2019-08-04 | 3539 | 0
2019-08-14 | 3539 | 0
2019-07-24 | 3539 | 7
请指教。
科比
我实际上会在这里使用交叉联接,然后再使用另一个左联接来引入点击计数数据:
SELECT d.click_date, c1.clicker, COALESCE(c2.click_count, 0) AS click_count FROM dates d CROSS JOIN Clicks c1 LEFT JOIN Clicks c2 ON d.click_date = c2.date AND c1.clicker = c2.clicker ORDER BY c1.clicker, d.click_date;
注意:如果该Clicks
表可以使给定的答题器出现多次,请使用:
CROSS JOIN (SELECT DISTINCT clicker FROM Clicks) c1
在交叉加入之前删除重复项。