テーブルが3つありますが、ここではテーブルA、B、Cと呼んでいます。テーブルAはBと1対多の関係を持ち、BはCと1対多数の関係を持っています。このクエリでは、Cからの不本意な値だけが必要ですが、以下のクエリはBに一致するマルチファイルのCレコードを返します。3つのテーブルから1つのテーブルを選択する
現在、私のクエリはそのようなものです:
Select * from A Left Outer Join B on A.key = B.key Left Outer Join C on B.AltKey = C.AltKey
アイデアはありますか? 事前に感謝します。
A、B、Cのサンプルデータを提供して、実際にどの行を特定できますか?また、使用しているSQL Serverのバージョンを指定してください。このソリューションは、SQL Server 2000とSQL Server 2008とではかなり異なる場合があります。 –
こんにちはアーロン、私はMSSQL 2008を使用しています。私はAJに対する私のコメントで私が見たいと思っているものの詳細な説明を提供しました。テーブルAをプロジェクト、Bを監査、Cを調査結果と考えてください。したがって、Project0 null null、Project1 Audit1 Finding1、Project2 Audit2 null、Project2 Audit3 Finding3、Project 2 Audit 4 nullなど。そうですね、Project2 Audit3 Finding4がレコードとして表示されないようにします。 。 – Sean
まだ見ておくと便利だと思います。 「1つの一致につき1つだけ、したがって別個の欲求」と「1つだけのレコードを表示する」のようなステートメントの真の関係性の側面を決定するのは難しい.Cの行が5つある場合は、あなたは欲しい。 C内に少なくとも1つの行があることだけを知りたい場合は、別の方法(たとえば、結合の代わりにEXISTSサブクエリ)を解決することができます。だから、サンプルデータと望ましい結果をください。 –