2017-01-30 11 views
2

私は2つのテーブルと3つの条件がある場合、Table1で2つの条件をチェックしなければならず、テーブル2では1つの条件だけをチェックして、同様に表1に示す。いくつかのテーブルと条件に基づくSQL文

SELECT CUSTOMER_ID FROM Table1 WHERE Column_name1 = 'condition1' or Column_name2 = 'Condition2'; 
SELECT CUSTOMER_ID FROM Table2 WHERE Column_name3 IS NOT NULL; 

だから私は、この2のうちの1つのSQLコードを作成しようとしているので、両方のテーブルをチェックして、少なくとも1つの条件が真となります値を返します。 CUSTOMER_IDテーブルの値が表示されます。

私はこの

SELECT CUSTOMER_ID 
FROM Table1 
WHERE Column_name1 = 'condition1' or Column_name2 = 'condition2' 
INNER JOIN Table2 
ON Column_name3 IS NOT NULL 
WHERE Table1.CUSTOMER_ID=Table2.CUSTOMER_ID; 

のようなものを試してみましたが、私はのは言わせ、それが動作していない理由を私は本当に理解していない、この分野ではかなり新しいです。

任意の条件がtrueの場合は、CUSTOMER_IDが返されますが、1つのCUSTOMERが1つだけでなく、すべての条件が真である可能性があります。私は顧客のIDを一度だけリストアップする必要があります。

もっと明確にする必要がある場合は、お知らせください。

ありがとうございます。このため

+1

ドキュメントで「ユニオン」を参照してください。 –

+0

あなたの質問は私にはっきりと分かりません。言葉であなたの問題を説明する代わりに、_サンプル・テーブル・データと期待される出力を表示してください。 –

+0

ONは条件を結合するためのもので、Table1.CUSTOMER_ID = Table2.CUSTOMER_IDです。 「フィルタリング」はどこにありますか? NOT NULL条件。 – jarlh

答えて

1

質問は非常に明確ではありませんが、それはあなたが必要になります。

SELECT CUSTOMER_ID FROM Table1 
    WHERE Column_name1 = 'condition1' or Column_name2 = 'Condition2' 
union 
SELECT CUSTOMER_ID FROM Table2 
    WHERE Column_name3 IS NOT NULL; 

joinが使用されているあなたは、2つ(またはそれ以上)から1つの結果行を作成する必要がある場合異なるテーブルのソース行。
unionは、複数のクエリの結果の合計を取得する必要がある場合に使用されます。 union allがすべての結果を返すと、unionはユニークな結果のみを返します。

0

ゴー:

SELECT CUSTOMER_ID 
FROM Table1 
LEFT JOIN Table2 
    On Table1.CUSTOMER_ID=Table2.CUSTOMER_ID; 
WHERE Column_name1 = 'condition1' or Column_name2 = 'Condition2' or Column_name3 IS NOT NULL 
関連する問題