我有一个数据库,有一张场地和预订的桌子。我们的关系是1:M,我想选择所有的场地,在一个特定的日期没有预订。日期字段名为booking_date,出现在订票表中。我不是SQL中最强的,但我发现不存在,但这似乎给了我没有场地或所有场地,这取决于日期是否只出现在一个booking_date字段中。
总之,我需要的是一个查询:选择所有的场馆,没有booking_date字段=?
地点表: id、int name、string其他不重要的字段
预订表: id、int customer_id、int venue_id、int booking_date、date
所以场地属于预订。我想要所有没有预订的场地,booking_date字段等于指定的日期。
例如,如果我有5个场地,其中一个在2014-06-09年预订,而我提供了那个日期,我想要其他4个场地,在这一天没有预订。
如果有人感兴趣,这是用来显示的地点,在一个特定的日期,用户指定。
发布于 2014-05-09 17:19:32
NOT EXISTS听起来正是您所需要的:
SELECT *
FROM Venues V
WHERE NOT EXISTS(SELECT 1 FROM bookings
WHERE booking_date = 'SomeDate'
AND venue_id = V.venue_id)发布于 2014-05-09 17:21:05
我会在这里处理这个问题(在你的桌子上做一些假设):
DECLARE @DateCheck date = '2014-05-09';
SELECT
*
FROM
Venues
WHERE
VenueId NOT IN
(
SELECT
VenueId
FROM
Bookings
WHERE
BookingDate = @DateCheck
);发布于 2014-05-09 17:22:01
检查以下查询
select v.* from
tbl_venues v
left join tbl_bookings b on v.VenueID=b.VenueID and b.booking_date ='2014-05-02'
where b.bookingID is null其中bookingID:预订表的主列,venueID:场馆表的主列
https://stackoverflow.com/questions/23570443
复制相似问题