2017-03-08 33 views
1

讓我們說,我們有如下的聯接進行設置:多表連接兩難困境

甲 - >乙 - 「ç - > d

這組連接的結果集中只產生一個1行。 現在,如果我們增加更多的加入:

A -> B -> C -> D 
    | 
    E -> F -> G 

現在B也加入了與E.

所有的連接是內部連接。

我們可以保證結果集總是會有0或1行嗎?

+3

這是一個描述SQL查詢的非典型圖。你能否提供一些數據,理想情況下是一個小例子來證明你的問題? –

回答

0

簡單的回答:不可以。如果任何連接B - > E,E-> F,F-> G是一對多的,那麼您可能會從查詢中返回多個行。

+0

一對多關係取決於用於連接的列。雙方都有英國或PK確保一對一。 – Lostblue

0

是的,你可以。

如果你想確保0或1行,你必須確保每個表都加入他們的主鍵或雙方的唯一索引;你的WHERE子句也確保一個表返回0或1行。

因爲每個JOIN都確保了多重性,所以成爲唯一索引或主鍵很重要。具有唯一的索引或主鍵可確保(0,1)x(0,1)關係。