2013-02-07 56 views
0
[1] SELECT X.id FROM somwhere WHERE X.location = _stringReturnedFromC#_ 
      // I need ID from this table, I only know strin: Location (from C#) 

[2] SELECT Y.NameID FROM _relationBetweenXandY_ xy WHERE xy.ID = [1] 
      // I use the ID I just found in [1] 

[3] SELECT Z.Name FROM Z WHERE Z.NameID = [2] 
      // I use the ID I found in [2] 

現在,我怎麼告訴select [2],我找xy.ID = result from select [1]如何正確加入這些選擇?

而且select [3],我正在尋找與ID的傢伙的名字Z.NameID

我問這個問題here但據因爲我擔心這個問題是無法挽救的。

Z table: 
     Z.Name, Z.NameID 
Y Table: 
     Y.PLACE, Y.PlaceID // fixed, Used to be PlaceID, is inface string: Place 
X Table: 
     X.Name, X.PlaceID 

如果他們有相同的名字,他們是外鍵(填充NameID,PlaceID)

這是實際的代碼看起來是這樣的:

SELECT * FROM Angajati a 
JOIN Distribuire d ON d.Locatie = 'Oradea' 
// now I need to get d.DistribuireID while I know d.Locatie (d.location). How ? 
JOIN Angajari an ON d.DistribuireID = an.DistribuireID 

因此

SELECT * 
FROM TableX X 
    JOIN TableY y on x.PlaceId = y.PlaceId 
    JOIN TableZ z on y.NameId = z.NameId 

不工作,因爲我不知道Y.PlaceID,我只知道Y.Place

最後的編輯

,如果這是越來越太長對不起。下面是它的外觀(我的意思是,即使語法不起作用,這是邏輯)現在我只需要這個語法!

SELECT d.DistribuireID FROM Distribuire d WHERE d.Locatie = 'Oradea' 
JOIN Angajari an ON an.DistribuireID = d.DistribuireID /*Here I'd need an.AngajatID for the locationID I just selected*/ 
JOIN Angajati a ON a.AngajatID = an.AngajatID 

回答

2

看起來你只是需要一些內部連接:

SELECT * 
FROM TableX X 
    JOIN TableY y on x.PlaceId = y.PlaceId 
    JOIN TableZ z on y.NameId = z.NameId 

希望這有助於。

-EDIT - 爲什麼不行?很抱歉,如果我沒有理解你的問題......

SELECT d.DistribuireID 
FROM Distribuire d 
    JOIN Angajari an ON an.DistribuireID = d.DistribuireID 
    JOIN Angajati a ON a.AngajatID = an.AngajatID 
WHERE d.Locatie = 'Oradea' 

好運。

+0

我可能會問這個問題有點不對。一旦我找出不正確的地方,我會盡快回復你。 – Kalec

+0

我已經編輯了一個小型的erorr。您的連接現在無法工作,我仍然不知道如何獲得最終結果。 – Kalec

+0

@Kalec - 我不知道我完全理解你在找什麼,但我發佈了一個更新。讓我知道。 – sgeddes