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

私はここでこの質問をしましたが、私に関する限り、その質問は保存を超えています。

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
4

1 に答える 1

2

いくつかの内部結合が必要なようです。

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

お役に立てれば。

-編集-なぜこれが機能しないのですか?あなたの質問がわからない場合は申し訳ありません...

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'

幸運を。

于 2013-02-07T23:11:56.577 に答える