SQL SERVER 2008 のストアド プロシージャで次のクエリを作成しました: (意図的にテーブル名を切り捨て、クエリを読みやすくしました)
1)
select Pr.Id from D D , DP DP, P P, Pr Pr
where D.Id = DP.Id AND DP.Id = P.Id AND P.Id = Pr.Id;
完全に正常に動作しますが、内部結合を使用して同じクエリを作成すると
2)
select Pr.PId from D D
INNER JOIN DP DP ON D.Id = DP.Id
INNER JOIN P P ON DP.Id = P.Id
INNER JOIN Pr Pr ON P.Id = Pr.Id
エラーがスローされます:マルチパート識別子「Pr.Id」をバインドできませんでした。
3)別のバージョンをもう一度試しました:
select Pr.Id from Pr Pr
INNER JOIN P P ON Pr.Id = P.Id
INNER JOIN DP DP ON P.Id = DP.Id
INNER JOIN Dealer D ON DP.Id = D.Id
1 と 3 が機能するのに 2 が機能しない理由がわかりません。私はそれらのすべてが同じことを意味するように感じますが。