我寫這條SQL語句,並想弄清楚它的關係代數:轉換SQL到關係代數例
SELECT S.Oid
FROM Shipment S
WHERE EXISTS (SELECT W.Wid
FROM Warehouse W
WHERE W.City = ‘Pittsburgh’ AND S.Wid = W.Wid)
這是該語句的正確關係代數?
(πS.Oid(運費S))U(πW.City = '匹茲堡',S.Wid = W.Wid (倉庫W))
我寫這條SQL語句,並想弄清楚它的關係代數:轉換SQL到關係代數例
SELECT S.Oid
FROM Shipment S
WHERE EXISTS (SELECT W.Wid
FROM Warehouse W
WHERE W.City = ‘Pittsburgh’ AND S.Wid = W.Wid)
這是該語句的正確關係代數?
(πS.Oid(運費S))U(πW.City = '匹茲堡',S.Wid = W.Wid (倉庫W))
你的代數表達式是不正確。
要找到正確的答案,你可以注意到,SQL查詢相當於一個連接:
SELECT DISTINCT S.Oid
FROM Shipment S, Warehouse W
WHERE S.Wid = W.Wid AND W.City = ‘Pittsburgh’
所以在關係代數這相當於:
π S.Oid(裝運s⨝ S.Wid = W.Widσ W.City ='匹茲堡'(倉庫W))
非常感謝。好的,類似這樣的事情,會是這樣嗎? 'SELECT I.Iid,I.Unit_Price FROM項目I,級O WHERE O.Oid =「13452'' 作爲該: πI.Iid,I.Unit_Price(項目我⨝σO.Oid ='13452'(Orders O)) – SummerDays
在SQL查詢中缺少連接條件,所以查詢是交叉產品而不是連接。您的關係表達式是正確的,您應該使用產品×而不是連接part。 – Renzo
Renzo意味着你的評論SQL應該像'... AND I.Iid = O.Iid'。 @Renzo在這裏討論連接和產品,甚至是正確的代數表達式是沒有意義的,因爲不清楚OP操作符如何處理列名:不存在常用的代數,它的語法與OP的SQLy或你的「代數「表達式,並且OP沒有引用一個。 – philipxy
請:*哪個版本的關係代數? – philipxy