我试图将两个表合并在一起,以便包含
在没有记录的情况下添加星期。例如,给定下表:

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

09-11 20:02