2017-06-05 2 views
0

私は最近かなりの数の問題を抱えています。 2つのテーブルTable1Table2があるとします。条件の有無にかかわらずこれらのテーブルにjoinを作成する方法はありますか?条件の有無にかかわらずテーブルを結合する

例えば:

Select * from Table1 t1 left join Table2 t2 on t1.column = t2.column where t2.anothercolumn in (v1,v2,v3) and ...; 

Select * from Table1 t1 left join Table2 t2 on t1.column = t2.column where t2.anothercolumn in ('') and ....; 

したがって、これらの2つのケースでアイワナは、私がt2列の状態を指している場合、それはそれに関連した結果がそうでない場合は、すべてを示して私を見るなり、参加を行うことができます。

私がin('')を入れると、現時点では何も表示されません。

ありがとうございます。

答えて

0

あなたがleft joinを行うと、テーブル上の条件がON句に行く:最初のテーブルに

Select * 
from Table1 t1 left join 
    Table2 t2 
    on t1.column = t2.column and 
     t2.anothercolumn in (v1, v2, v3) and ...; 

条件はwhere句に行きます。これは不可解なルールのように思えるかもしれません。しかし、根本的な仕組みを理解すれば、それは意味があります。

left joinは、on句がtrueと評価されているかどうかにかかわらず、すべての行をの最初のテーブルに保持します。したがって、最初のテーブルの条件は結果に影響しません(left joinは最初のレコードをとにかく保持します)。一方

where句がそれらを処理しているときに、第2のテーブル上の値がNULLているので、あなたのバージョンは、inner joinleft joinになります。

+0

私はそこに( '')を入れても何も表示されません – user2137817

+0

値を置くと、その条件に関連するレコードしか得られず、内部結合や私はすべてを得ることができない場合は、 – user2137817

0

前述のように、内部結合を使用する必要があります。 左の結合は、左のテーブルからすべてのレコードを取り出し、右側のレコードから一致するレコードをフェッチします。 2つのテーブルの共通部分にフィルタを適用する場合は、内部結合を使用します。

グラフィカルな説明がここにあります:クエリを処理https://www.w3schools.com/sql/sql_join.asp

+0

私は内部の結合が何であるか知っている私は何も表示されません 'IN'に空の値を入れても、それは私の問題を解決しないでくださいありがとうございました – user2137817

0

プロセスMySQLはそれが最初にあなたの残っている句から参加してください、その後、場所を指定する列に、それよりも句が結果を生成することですselect句で選択した列に基づいて設定します。

(質問)私がin( '')を入れると、何も表示されません。その結果は@inputがnullでない場合は、すべてのフィールドがされる行

0
Select * 
from Table1 t1 left join 
    Table2 t2 
    on t1.column = t2.column and 
    t2.anothercolumn in (coalesce (@input, t2.anothercolumn)) and ... 
    where t1.someColumnName is NOT NULL or @value is NULL 
; 

表示されない場合はゼロになりそうならば、それは「」あなたはそれが含まれている場合句と見つける場所に指定した列になります 理由それ以外の場合は、フィルタリングされたフィールドが返されます。

+0

ありがとう私は@inputにnullを置くと、すべてが正しかったが、値を置くと、値を持つレコードと、左の結合によって引き起こされたnullのレコードを得ることになる。 ofcと私はちょうど値を持つ特定のレコードがほしい – user2137817

+0

このクエリで内部結合を使用しない理由は何ですか? –

+0

いくつかのレコードがマップされていないので、入力がないときにも表示したい場合は、内部に入れない場合は – user2137817

関連する問題