我有 2 个表,餐馆和订单,订单表有和restaurant_id
字段,每天都是订单表中的单独一行。status
date
我需要过滤餐厅并仅显示在某个日期范围内至少有一次预订的餐厅,但我必须在日历上显示它,它应该看起来像带有信息的餐厅列表。
像这样
因此,这意味着如果at least one day with reserved status
在该日期范围内满足条件,则该餐厅在该日期范围内的所有订单也应该被获取。
我无法进行通常的内部连接,
SELECT r.`id`, r.`name`, o.`date`, o.`status`
FROM restaurants r
INNER JOIN orders o ON r.id = o.restaurant_id AND o.date BETWEEN '2013-08-10' AND '2013-08-31'
AND status = 'reserved'
因为,在这种情况下,例如,我将没有餐厅 2 的 8 月 31 日的订单信息,因为虽然它的日期范围是 10 到 31,但它的状态是“关闭”。所以,我正在考虑像这样进行左连接
SELECT r.`id`, r.`name`, o.`date`, o.`status`, o.`id` order_id
FROM restaurants r
LEFT JOIN orders o ON r.id = o.restaurant_id AND
o.date BETWEEN '2013-08-10' AND '2013-08-31'
WHERE o.`id` IS NOT NULL
但我还需要添加一个条件以确保至少有一行订单的状态 = 'reserved',我尝试添加 where 子句,COUNT(o.status = 1) > 0
但它给出了错误。
谢谢