基本上,我有一个表,称为它regular
,它给我service_id
一周中给定的一天,然后是另一个表,称为它exception
,它指定某些日期,当service_id
它与通常的不同时。将service_id
视为不透明的字符串。
regular
的结构:
+-------------+------------+
| day_of_week | service_id |
+-------------+------------+
| sunday | some_serv |
| monday | another |
| tuesday | another |
(它会持续一周的剩余时间,几天通常会相同service_id
)
exception
的结构:
+-------------+------------+
| date | service_id |
+-------------+------------+
| 2013-05-11 | different |
(它有几个这样的日期)
基本上,我想要的是一个将返回 today's 的查询service_id
,这是星期几的值,除非第二个表中有异常,在这种情况下应该是service_id
.
我看不到任何好的方法,JOIN
因为service_id
列必然会有所不同,即使使用 aJOIN
我也不知道如何让第二个表的值替换第一个表的值,因为我希望将其加入进入一个更大的查询,这样我就可以得到今天的结果service_id
(尽管我想我可以做类似的事情
WHERE (
`exception`.`service_id`=Main.`service_id`
OR
(`exception`.`service_id` IS NULL AND `regular`.`service_id`=Main.`service_id`)
)
但这似乎很浪费)。
由于各种原因,更改这些表格的格式是有问题的。