如何为以下情况构建连接查询?

时间:2012-06-11 19:09:55

标签: mysql sql


   我有以下表结构:

 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的行,即使没有预留行也是如此。怎么能实现这个目标?

的问候,
拉维。

2 个答案:

答案 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