合并两个SQL查询

问题描述:

大家好我试图合并两个查询:合并两个SQL查询

SELECT DISTINCT name,$price 
FROM room 
JOIN room_booking ON room.room_id=room_booking.room_id 
WHERE date_booked<>'$us_date' AND capacity>=$partySize 

SELECT DISTINCT room_id 
FROM room_booking 
WHERE room_id NOT IN 
    (SELECT DISTINCT room_id 
    FROM room_booking 
    WHERE date_booked = '$date' 
    ) 

什么是上述合并的最佳途径,使最终的查询检查在room_booking表中不存在的日期,并在给定容量超过给定容量时从房间表中提取相关信息。

+0

**什么**数据库系统,以及哪个版本? ** SQL **只是结构化查询语言(Structured Query Language) - 许多数据库系统使用的语言 - SQL是** NOT **数据库产品......类似这样的东西通常是供应商特定的 - 所以我们真的需要知道什么您正在使用的数据库系统.... – 2012-03-18 11:31:31

+0

我正在使用** phpMyAdmin **。 – methuselah 2012-03-18 11:33:58

本应该做文中所述的作业(但我不知道什么date_booked<>'$us_date'是应该做的):

select name, price 
from room 
where capacity >= $partySize 
and room_id not in 
    (select room_id 
    from room_booking 
    where date_booked = '$date' 
) 

尝试用以下的方式合并:

SELECT DISTINCT name,$price 
FROM room JOIN room_booking ON room.room_id=room_booking.room_id 
WHERE date_booked<>'$us_date' AND capacity>=$partySize AND room_booking.room_id IN (SELECT DISTINCT room_id 
                        FROM room_booking 
                        WHERE room_id NOT IN 
                         (SELECT DISTINCT room_id 
                         FROM room_booking 
                         WHERE date_booked = '$date' 
                        )); 

也许

SELECT DISTINCT name,$price 
FROM room 
JOIN room_booking ON room.room_id=room_booking.room_id 
WHERE date_booked<>'$us_date' AND capacity>=$partySize 
AND date_booked <> '$date' 

或者你是否想列出所有room_id的?只需将room_id添加到选择列表中。你可以放弃在这种情况下的独特,因为我假设room_id的是独特的