2012-01-25 6 views
1

JOIN-edテーブルでJOINを実行する必要がありますが、それを達成する方法がわかりません。うまくいけば、以下の質問は、私がしようとしていることを示しています:国名、各国のリーダー、各リーダーの故郷を取得してください。JOIN-edテーブルでJOINを実行するにはどうすればよいですか?

このクエリの問題は、President.HomeTown_Idとの2回目の参加でJOIN-edテーブル "President"を使用していると思います。私は他に何を試していいのかわかりません。 VSで

SELECT 
    Countries.Name AS Country, 
    President.Name AS Leader, 
    PresidentHomeTown.Name AS LeaderHomeTown 
FROM Countries 
    LEFT OUTER JOIN PoliticalFigures AS President ON Countries.President_Id = President.Id 
    LEFT OUTER JOIN Cities AS PresidentHomeTown ON President.HomeTown_Id = PresidentHomeTown.Id 

、私は「マルチパート識別子 『President.Idは』バインドできませんでした。」、エラーを取得しています

テーブルとフィールドの名前は架空のものですが、私は同じ問題を解決する必要があります。物事をより明確にするために名前を変更しました。うまくいけば、これはより多くの人々に関連するでしょう。

- アップデート -

たぶん、元のコードは役立ちます:

SELECT 
    CaseComparisons.Directory AS CaseComparisonDir, 
    BaselineResult.Directory AS BaselineResultDir, 
    ComparisonResult.Directory AS ComparisonResultDir, 
    Setup.FullSvnLink AS SvnLink, 
    BaselineVersion.FullFilePath AS BaselineExecutableDir 
FROM CaseComparisons 
    LEFT OUTER JOIN Results AS BaselineResult ON CaseComparisons.BaselineResult_Id = Baseline.Id 
    LEFT OUTER JOIN Results AS ComparisonResult ON CaseComparisons.ComparisonResult_Id = Comparison.Id 
    LEFT OUTER JOIN Setups AS Setup ON Baseline.Setup_Id = Setups.Id 
    LEFT OUTER JOIN BuildVersions AS BaselineVersion ON BaselineResult.Version_Id = BuildVersions.Id 
WHERE 
    CaseComparisons.Status = 'Queued' OR 
    Baseline.Status = 'Queued' OR 
    Comparison.Status = 'Queued' 

私はクエリを実行すると、私は取得エラー:

The multi-part identifier "Baseline.Id" could not be bound. 
The multi-part identifier "Comparison.Id" could not be bound. 
The multi-part identifier "Baseline.Setup_Id" could not be bound. 
The multi-part identifier "Setups.Id" could not be bound. 
The multi-part identifier "BuildVersions.Id" could not be bound. 
The multi-part identifier "Baseline.Status" could not be bound. 
+6

らしいですか?あなたが持っている問題は何ですか?サンプルデータがありますか? –

+0

ええ、あなたのコードは正しい –

+0

あなたのクエリはうまく動作するはずです。それはエラーを投げているのですか、または再実行されたデータは期待したものではありませんか? – Lamak

答えて

4

指定したエイリアス(たとえばResults AS ComparisonResult)と使用しようとしているエイリアス(たとえばComparison.Id)が一致しません。

LEFT OUTER JOIN Results AS ComparisonResult 
       ON CaseComparisons.ComparisonResult_Id = ComparisonResult.Id 

またはこの:

LEFT OUTER JOIN Results AS Comparison 
       ON CaseComparisons.ComparisonResult_Id = Comparison.Id 

(と同様に他のすべての結合のために)このいずれかに

LEFT OUTER JOIN Results AS ComparisonResult 
       ON CaseComparisons.ComparisonResult_Id = Comparison.Id 

:だから、これを変更。

+0

ありがとうございました。ちょっとタイプミス?恥ずかしい!できるだけ早くこれを答えとしてチェックします。 (残り2分) –

0

あなたはIDを持っていません社長の表の列。それを再度確認してください。

0

これを試してみてください、あなたはあなたの名前が異なるがあります:あなたは正しい軌道に乗っているよう

SELECT 
    CaseComparisons.Directory AS CaseComparisonDir, 
    BaselineResult.Directory AS BaselineResultDir, 
    ComparisonResult.Directory AS ComparisonResultDir, 
    Setup.FullSvnLink AS SvnLink, 
    BaselineVersion.FullFilePath AS BaselineExecutableDir 
FROM CaseComparisons 
    LEFT OUTER JOIN Results AS BaselineResult ON CaseComparisons.BaselineResult_Id = BaselineResult.Id 
    LEFT OUTER JOIN Results AS ComparisonResult ON CaseComparisons.ComparisonResult_Id = ComparisonResult.Id 
    LEFT OUTER JOIN Setups AS Setup ON BaselineResult.Setup_Id = Setup.Id 
    LEFT OUTER JOIN BuildVersions AS BaselineVersion ON BaselineResult.Version_Id = BaselineVersion.Id 
WHERE 
    CaseComparisons.Status = 'Queued' OR 
    BaselineResult.Status = 'Queued' OR 
    ComparisonResult.Status = 'Queued' 
関連する問題