2016-11-22 1 views
0

に参加する私は、以下の図で複製、SQL Serverのクエリを記述しようとしています:カスタムオーダーは、SQL Serverの

enter image description here

私が最初に左の結果は、参加したい(order_defect & ncdef)であることを3番目のテーブル(フィルタ)との結合を残し、これらの3つの結果を最後のもの(nsdic)との結合に戻します。

これらのテーブルはそれぞれ巨大なので、スペースが限られており、「メモリ不足」のエラーが発生するため効率的な方法を見つけることを試みています...効率的なクエリの提案ですか?私が行う場合

Select * 
from A 
left join B on a.id = B.id 
left join C on a.id = c.id 

それは最初にAとBを結ぶ、その後、AとC ...しかし、私は "C" で参加する "& B" の結果を望んでいます。

基本的に私の質問は、1つの結合の結果を使用して別のテーブルと結合する方法です。

1 - 主キーのフィールドを、と:、列、キー...

しかし、私は思いやりのよ|

+0

ほとんどのデータベースエンジンはクエリを最適化しようとします。そのため、実行計画を検査していなければ、クエリの実行方法はわかりません。ヒント:適切なソフトウェア(MySQL、Oracle、DB2など)とバージョンの両方でデータベースの質問にタグを付けると便利です。 'sql-server-2014'です。 – HABO

+0

私は次回に感謝のため – faranak777

答えて

0

それはテーブルの設計とフィールドなしであなたを助けるためにdificultだありがとうどのように関係するテーブル

2 - 左を追加する方法

3結果

の数を減らすために「フィルター」、またはどのように参加する - かどうかを評価それサブクエリーを使用する方が良い

プラス:TOP 100 < ---と照会してテストしてください。

覚えておいてください:セクションのデータを表示する必要がある場合は、RAMのようなハードウェアの制限のためにクエリーを最適化することは不可能なことがあります。

+0

おかげさまで申し訳ありませんが、私の主な質問はどのように同じクエリで別の結合を行うために1つの結合のresualtを使用することです、あなたはそれを行う方法を知っていますか?なぜなら私は "A left join B left join c"をすると、AとBを結合したままにしてから、AとCを結合したままにしてしまうからです。しかし私はA&Bの結果がC – faranak777

+0

との結合になりたいと思っています。基本的に私の質問は、ある結合の結果を使用して別の表と結合する方法です。 その簡単: は \tが \tをc.id選択し、c.colum1 \t、c.colum2 \t、c.colum3 \t、c.colum4 \t、 からt3.colum1 ( を選択\t id1.id as \t、t1。colum1 \t、colum2 \t、colum3 \tとしてt2.column1としてt1.colum2として、TABLE1 t1の \tからcolum4 としてt2.colum2がt1.id = t2.id に表2のT2 \tに参加左colum1)としてc \t left join table3 t3 \t on c.id = t3.id –

1
select 
    c.id 
    ,c.colum1 
    ,c.colum2 
    ,c.colum3 
    ,c.colum4 
    ,t3.colum1 
from 
(
select 
    t1.id as id 
    ,t1.colum1 as colum1 
    ,t1.colum2 as colum2 
    ,t2.column1 as colum3 
    ,t2.colum2 as colum4 
from table1 t1 
    left join table2 t2 
    on t1.id = t2.id 
) as c 
    left join table3 t3 
    on c.id = t3.id