2016-04-17 49 views
0

我試圖從關係代數轉換到SQL查詢:這個關係代數陳述是做什麼的? (轉換爲SQL查詢)

ρ(R1, ΠroomId((ΠguestIdσage<35Guest) Natural Join Reservation)) 
ρ(R2, ΠroomIdσprice≤100∨numberOfBeds>2Room) 
R1 ∧ R2 

據我所知,它是重命名輸出到R1,和R2爲所述第二部分,然後它執行R1和R2

然而,我的困惑是從關係代數轉換到查詢

誰能幫助或提供一些見解,如何這會做些什麼呢?

回答

0

第一條語句是從關係Guest所有的記錄,其中age低於35projecting只有guestIdselecting

該所得關係然後naturally joined與另一個表ReservationprojectingroomId結果並調用結果R1

第二條語句是從關係間所有具有price低於或高於100等於或大於2牀,projectingroomId結果行,調用此第二個結果R2selecting

如果我讀這正確的,這是翻譯成SQL應該是這樣的:

SELECT roomId AS R1 
FROM (
    SELECT guestId 
    FROM Guest 
    WHERE age < 35 
) AS YoungGuests NATURAL JOIN Reservation 
WHERE roomId IN (
    SELECT roomId AS R2 
    FROM Room 
    WHERE price <= 100 OR numberOfBeds > 2 
); 

的想法是,以選擇至少有兩張牀或價格更低的客人35歲以下保留的所有客房超過100. Here一個工作示例(帶有一些虛擬數據)。

+0

你能解釋聯盟從哪裏來的嗎?不是'^'是不是一個AND? – RandomMath

+0

@RandomMath是的,我誤解了它。固定:) – Cynical

+0

我沒有嘗試這個查詢 - 但這不是正確的翻譯,因爲它產生的錯誤 – RandomMath