2017-03-08 31 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)关系。