MySql - 通过一些计算从 2 table 构建一个视图

MySql - build a view from 2 table with some calculations

我试着把我的预订系统放在一起,这部分留待理解。这可以用 CASE 语句完成吗?或者我应该怎么想?

我是初学者,喜欢 short/easy 代码。

我如何从这里得到它...

date_source_table

---id---+-----date------+---times---+---
   1       2020-01-02         3
   2       2020-01-03         2
   3       2020-01-04         3

time_source_table

 ---id---+----time------
       1       09:00
       2       09:30
       3       10:00

date_time_result_view

---id---+-----date------+---time---+---
   1       2020-01-02       09:00
   2       2020-01-02       09:30
   3       2020-01-02       10:00
   4       2020-01-03       09:00
   5       2020-01-03       09:30
   6       2020-01-04       09:00
   7       2020-01-04       09:30
   8       2020-01-04       10:00

此致 /斯万特

In MySQL 8+ 您可以使用row_number() window函数对time_source_table中的记录进行编号。然后,您可以在这些数字小于或等于 date_source_table.times 时将它们加入 date_source_table。您还可以使用 row_number() 获取输出的“ID”,如果这些实际上应该只是从 1 到 n.

的数字
SELECT row_number() OVER (ORDER BY dso.date,
                                   tso.time) id,
       dso.date,
       tso.time
       FROM date_source_table dso
            INNER JOIN (SELECT tsi.time,
                               row_number() OVER (ORDER BY tsi.time) rn
                               FROM time_source_table tsi) tso
                       ON tso.rn <= dso.times;

如果 time_source_table.id 保证按 time 的顺序排列并且没有间隙,您也可以使用它来加入。但是,如果该列只是一个 AUTO_INCREMENT,则不会提供这些保证。这可能会突然产生不需要的结果。因此,如果必须,请谨慎使用它。