我有2张桌子,餐厅和订单,每个餐厅可以有很多订单
restaurants table
id
name
orders table
id
restaurant_id
date
我需要找到在某个日期范围内没有订单的餐厅。在订单表中,我保存订单日期,例如 - 每行代表一天。因此,我需要进行内部联接,但订单表中没有结果。比如说,我需要找到免费的餐馆2013-08-09 to 2013-08-11
日期范围。我怎样才能做到这一点?如何进行查询,根据日期范围给出订单表中没有匹配的餐厅?
实际上我可以将订单表中的所有日期保存为 not_ordered 状态,并进行内部连接not_ordered = true
条件,但在这种情况下,我将不得不用日期填充所有表格,这对我来说不是一件好事。
Thanks
select r.*
from restaurant r
left join orders o on r.id = o.restaurant_id and o.date between '...' and '...'
where o.id is null;
或者你可以使用not exists
如其他答案所示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)