2015-08-21 77 views
0

存在以下contruct的兩個領域:SQL:加入同一個表中的兩列上的另一個同桌

表阿爾法:

AlphaId 
Name 
BetaID 
<some other fields> 

一個alpha有一個關係到自身和可選的關係,另一阿爾法, 所以這個阿爾法阿爾法表,其中記錄這種關係:

BetaID 
AlphaId 

例如:

表阿爾法:

AlphaId, Name, BetaID 
100, abc, 123 
101, xyz, 124 
102, opq, 125 

和表阿爾法阿爾法:

BetaID, AlphaId 
123, 100 
123, 101 
124, 101 
125, 102 

用一個簡單的連接來自阿爾法阿爾法阿爾法我可以管理

123, abc, 100 
123, abc, 101 
124, xyz, 101 
125, opq, 102 

123, 100, abc 
123, 101, xyz 
124, 101, xyz 
125, 102, opq 

,但不能與名稱在一起。

我想是這樣的:

123, abc, 100, abc 
123, abc, 101, xyz 
124, xyz, 101, xyz 
125, opq, 102, opq 

或者乾脆

abc, abc 
abc, xyz 
xyz, xyz 
opq, opc 

如何在世界上我能做到這一點?同一張桌子上的兩個連接會引發錯誤。如果我將條件與AND或OR相結合,我不會得到相同的結果。

作爲獎金踢出自我的關係也將是非常酷的,這樣的結果可能是唯一

abc, abc 
abc, xyz 

有沒有辦法這樣做的可能性?

+0

在我們的列,而不是領域DBMS。 – jarlh

回答

0

您可以使用表的別名,像這樣:

select a1.name,a2.name 
from alpha a1,alpha a2,alpha-alpha c 
where a1.betaid = c.betaid and a2.alphaid = c.alphaid 
+0

這不起作用。我不能做一個基本上相同的表。從alpha a1,alpha a2中選擇*;已經發生了錯誤 – kumoyadori

+0

你在使用什麼SQL? – Szidor

+0

請不要使用隱式連接語法(逗號分隔的'FROM'子句)。始終明確列出您的連接。有很多事情可能會發生微妙的錯誤... –

相關問題