2017-08-10 6 views
0

このパラメータは、table1の主キーであるIDです。その他の3つの表には、table1を参照するための詳細が含まれています。明らかに私がすべての結合を切り取った場合、私はTable1からのIDだけのデータを取得します。私は本当に何が起こっているのか理解したいと思います。ありがとう。すべてのパラメータで動作しないストアドプロシージャがあります。@AnID

SELECT 
    Detail14, Detail15, Detail16, //etc, etc 
FROM 
    Table1 
INNER JOIN 
    dbo.Table2 ON dbo.Table1.FK_AnID = dbo.Table2.PK_AnotherID 
INNER JOIN 
    dbo.tblTable3 ON dbo.Table2.FK_Group = dbo.tblTable3.PK_RowID 
LEFT JOIN 
    dbo.tblTable4 ON dbo.tblTable4.Name = dbo.Table1.Named 
WHERE 
    PK_RefNumber = @AnID 
+0

ストアドプロシージャのパラメータを除外するだけで、(ストアドプロシージャの外で)単独で実行すると、クエリは目的のデータセットを返しますか? –

+0

ええ、結合を取り出してtable1でクエリを実行すると、データセットが返されますが、同じパラメータがあれば結合で何も得られません。 – mabees

+0

プロシージャ・コード(ストアド・プロシージャのようなもの)は**ベンダー固有のもの** ** - あなたが使用している実際の具体的なデータベース**システム**のタグをmysql、postgresql、 'oracle'、' sql-server'、 'db2'または全く別のもの... –

答えて

0

ステップバイステップでこれを分解します。ジョインが正しくなるまでselect *を使い、必要なフィールドに移動します。

したがって、where句を使用して最初のテーブルのレコードを取得します(最初のテーブルのレコードの場合)。 2番目のテーブルを追加します。レコードを取得した場合、それは問題の原因ではなく、第3などを追加してください。

間違ったフィールドに参加している可能性があります。

+0

すべてのINNER結合をLEFTに変更しても結果が得られません。すべてをFULL JOINSに変更すると、必要な結果セットが得られます。申し訳ありませんが、これは長いルートですが、本番データベースですが、私はエクスポートしました。 – mabees

+0

内部ジョインと左ジョインで間違ったテーブルを使用する必要がありますか?言い換えると、最初のテーブルにのみnullレコードがありますか? – HLGEM

+0

また、フル・ジョイン、フル・ジョイン、左ジョインとしても機能します。他の表のすべてのfiledsは、table1のフィールドを切り分けるための関係データでいっぱいです。それらのうちのどれも空ではありませんが、それぞれの主キーを除いてすべてnullです。 – mabees

関連する問題