2013-01-10 41 views
1

我需要編寫一個select語句,該語句不僅收集來自多個表的信息,而且收集來自某個表內與匹配該表內其他行內數據的信息。行之間的SQL匹配列

所以,儘管連接可以用於多表問題,但據我所知,我不能在同一個表中「連接」列a和列b。

下面是詳細

我有以下表

CR,VM和文件夾

,我需要選擇以下:

ID名稱從CR

文件夾名稱

文件夾名稱howeve r不在文件夾表中,爲了找到它,我需要先從CR中取出「ID」並將其與VM中的「ObjectID」相匹配 - 然後該行中的「位置」列與VM中另一行的ObjectID相匹配表。

我需要再在文件夾匹配ID給對象ID,並在表中的「文件夾」檢索「姓名」來檢索文件夾名稱」。

我不太知道從哪裏開始,我應該使用此遊標?

+2

實際上你可以加入co同一張表中的列。一個JOIN在其ON子句中可以有一個任意表達式。請從你的表中發佈一些示例數據... –

回答

1

可以通過別名的加入一個側面把一個表和自己。這可能足以讓你開始。否則,我們需要看到一些樣本數據。

SELECT 
    CR.ID, 
    CR.Name, 
    Folder.Name AS FolderName 
FROM 
    CR 
    /* First join CR to VM */ 
    INNER JOIN VM ON CR.ID = VM.ObjectID 
    /* Then join VM to itself aliased as VMLoc, mapping Location to ObjectID */ 
    INNER JOIN VM AS VMLoc ON VM.Location = VMLoc.ObjectID 
    /* Finally join the second ObjectID to Folder to get Folder.Name */ 
    INNER JOIN Folder ON Folder.ID = VMLoc.ObjectID 
+0

完美。一旦我知道我可以將一張桌子別名並加入自己,其他所有事情都會落實到位。腳本現在已經完成並且可以工作。非常感謝。 – BalaclavaBivvy

+0

@ user73429樂於幫忙,歡迎來到Stack Overflow。 –