2017-05-25 95 views
3

我是新來的sql,如果我在桌子上運行這個投影,它會不會返回任何內容,或者這個投影的錯誤是不允許的(語法)?我把表,並在下面這張圖投影的所有相關信息,使其更易於閱讀:)這個預測會返回什麼?

my table and projection

+0

SQL與關係代數是兩回事。另外,你給出了什麼*參考*(你的版本)'關係代數'? Whate *定義*是你給出的投影? PS請儘可能使用文字而不是圖片,就像這個問題一樣。 (如果你想要一個符號,你可以google'unicode pi'等。) – philipxy

回答

1

在關係代數,因爲兩套不互助社您所設定的差異將產生一個錯誤兼容:

對於設置的聯合和集合差異,所涉及的兩個關係必須是聯合兼容的 - 也就是說,兩個關係必須具有相同的一組屬性。 from wikipedia

在SQL中,差集會的工作,因爲工會的兼容性是一個更爲寬鬆的方式理解,即元組度和數據類型必須匹配,而不是名字。因此,這是有效的SQL:

SELECT X FROM A 
EXCEPT 
SELECT Z FROM A 

其結果將是一個名爲X

然而,即使在SQL,你不能從差集項目Y一列一個表,所以πÿ在SQL和關係代數中都是不可能的。這將是無效SQL:

SELECT Y -- Y is not defined here, only X 
FROM (
    SELECT X FROM A 
    EXCEPT 
    SELECT Z FROM A 
)