我试图将两个表合并在一起,以便包含
在没有记录的情况下添加星期。例如,给定下表:
shop_id process_day
1 Mon
1 Tues
1 Wed
1 Thurs
1 Fri
1 Sat
1 Sun
2 Mon
2 Tues
3
days_of_week
Mon
Tues
Wed
Thurs
Fri
Sat
Sun
如何加入它们以添加一周中的几天,以便新的结果表如下所示:
shop_id data_process_date
1 Mon
1 Tues
1 Wed
1 Thurs
1 Fri
1 Sat
1 Sun
2 Mon
2 Tues
2 Wed
2 Thurs
2 Fri
2 Sat
2 Sun
3 Mon
3 Tues
3 Wed
3 Thurs
3 Fri
3 Sat
3 Sun
最佳答案
您可以使用CROSS JOIN
获得所有可能的组合。在Derived table中,我们可以获得shop_id
的唯一值,然后进行笛卡尔积(交叉连接),以获得所有可能的组合:
SELECT
dt.shop_id,
t2.days_of_week AS date_process_date
FROM
(
SELECT DISTINCT shop_id FROM table1
) AS dt
CROSS JOIN table2 AS t2
ORDER BY dt1.shop_id