我有以下表结构:
Item:
-----------------------
item_id INT (PRIMARY),
category_id MEDIUMINT,
name VARCHAR(40)
reservation:
-----------------------
id INT (PRIMARY),
item_id INT,
date DATE,
slot VARCHAR(50)
我希望表Item中特定category_id的所有行都有一个连接到预留表ON列column_id WHERE reservation.date ='something'在查询中返回。无法保证所查询日期的预订行可用。但是我需要从Item表返回所有相应category_id的行,即使没有预留行也是如此。怎么能实现这个目标?
的问候,
拉维。
答案 0 :(得分:0)
使用左连接。例如,使用SQL Fiddle,我提出了:
select *
from item as i
left join reservation as r
on i.item_id = r.item_id and r.date is not null (where reservation date is set or use r.date = 'date' if you want a specific date)
where i.category_id = '1'
答案 1 :(得分:0)
听起来left join
符合条款。如果您将日期限制添加到on
子句,则日期限制不会过滤掉Item
中的行。
select *
from Item i
left join
reservation r
on i.item_id = r.item_id
and r.date = '2012-06-11'
where category_id = 42