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_idWHEREreserved.date='something'がクエリで返されるようにします。照会された日付で予約行が使用可能になるという保証はありません。ただし、予約行がない場合でも、対応するcategory_idのすべての行をItemテーブルから返す必要があります。これはどのように達成できますか?

よろしく、
ラビ。

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 に答える