0


我有以下表结构:

 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 列 item_id WHERE reservation.date = 'something' 的连接在查询中返回。不保证预订行将在查询日期可用。但是即使没有保留行,我也需要从 Item 表中返回相应 category_id 的所有行。如何实现这一目标?

问候,
拉维。

4

2 回答 2

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'
于 2012-06-11T19:12:18.300 回答
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
于 2012-06-11T19:13:20.233 回答