2013-02-07 58 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