2017-10-28 4 views
0

私は3つのテーブルI.E.を持っています。表1、表2、表3。私はtable1とtable2をprod_id列に基づいて結合することができます(これは共通であり、table2は外部キーの概念と関連しています)。3番目のテーブルに共通の列を持たずに3つのテーブルを結合するにはどうすればよいですか?

ここで、table3とtable1とtable2の結果を結合します。ここでは、すべての列がtable3で同じです。 row_number()を試しましたが、正しい結果が得られません。

どのようにSQL Server 2016でこれを行うことができますか?

+1

サンプルデータとテーブル構造を提供できますか?現在および予想されているアウトプットに加えて? – tarheel

答えて

0

ただ、表3は、計算結果のいくつかの種類によってTABLE1とtable2のに関連していることを考えると、一時テーブルを作成したり、サブクエリを行います

SELECT 
t1.col1 + t2.col2 as t12_result, 
t1.col2, 
t2.col2, 
INTO #temptable 
FROM table1 as t1 
left join table2 as t2 on t1.prod_id = t2.prod_id; 

SELECT t3.*, temp.* 
FROM table3 t3 
Left join #templtable temp on temp.t12_result = t3.col_id; 

しかし、あなただけの行数に参加したい場合は(そこに意味テーブルはちょうど同じ長さになり、それらを並べて保ちます)、それぞれにrow_number_idキーを作成して結合してください。 (ここでは、SQLが内部的に保持する行番号が明らかな行番号と同じではないことに気づく必要があります)。 各テーブルに人工の索引行を作成してそれらの表を結合することはできますが、これは難しいでしょう。前述のSQLは内部的には行の順序を気にせず、再整理しますその順序を決定するクラスタ化された階層的な主キー・セット。

関連する問題