有两个表,hotel
和hotel_booking
。 hotel_booking
表有两列:
hotel_id
date_booked
hotel_id
来自1-10
,对于每一个,如果已经预订,则会输入日期。
我需要搜索所有未在特定日期预订的hotel_id。我尝试过使用NOT IN
,但它会返回所有与该日期不匹配的日期输入,所以不等于。
这不起作用,但这是我到目前为止所做的:
SELECT * FROM hotel_booking WHERE date != "29/01/2014"
我知道我必须做某种子查询,但我不知道从哪里开始。
答案 0 :(得分:0)
SELECT * FROM hotel_booking WHERE date!=" 2014-01-29"
答案 1 :(得分:0)
您可以使用此查询:
SELECT h.hotel_id
FROM hotel h
LEFT JOIN (SELECT *
FROM hotel_booking b
WHERE date = "29/01/2014"
) excluded
ON excluded.hotel_id = h.hotel_id
WHERE excluded.hotel_id IS NULL
或者也是这个:
SELECT hotel_id
FROM hotel h
WHERE NOT EXISTS (SELECT NULL
FROM hotel_booking hb
WHERE hb.hotel_id = h.hotel_id
AND date = "29/01/2014")