2012-03-18 243 views
0

大家好我試圖合併兩個查詢:合併兩個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

回答

1

本應該做文中所述的作業(但我不知道什麼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' 
) 
1

嘗試用以下的方式合併:

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' 
                        )); 
1

也許

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的是獨特的