2017-09-05 36 views
-1

私は、顧客のグループに属していないすべてのメンバーを表示するクエリを実行しようとしています。私は共通のCustomerIDを持っている2つのテーブルを比較していて、メンバーのIDを使って2番目のテーブルにないメンバーを表示しています。CustomerGroupMember共通IDに基づいてMySQLの2つのテーブルを比較する

ここに2つのテーブルのサンプルがあります。

カスタマーメンバー

id | CustomerID | First | Last 
    --------------------------------- 
    123 | 1234  | Jim | Sample 
    129 | 1234  | Julie | Clark 
    137 | 1234  | Jack | Thomas 
    289 | 1234  | Sue | Smith 

カスタマーグループメンバー以下

MemberID | CustomerID | GroupID 
    --------------------------------- 
    129  | 1234  | 19 
    289  | 1234  | 20 

任意の結果を生成していないようだ私のクエリです。私はそれが顧客グループのメンバーテーブルに見つからない人を出力したいと思います。私は2番目の条件(CustomerGroupMember.CustomerID = '1234')を持つメンバー123と137の出力

SELECT CustomerMember.* FROM CustomerMember 
LEFT JOIN 
CustomerGroupMember ON CustomerMember.id = CustomerGroupMember.MemberID 
WHERE 
CustomerMember.CustomerID = '1234' AND CustomerGroupMember.CustomerID = '1234' 
AND CustomerGroupMember.MemberID IS NULL 
+1

は基本的にWHEREへと変更との論理積の1つを変更します。さらに詳しいヘルプについては、[私は非常に単純なSQLクエリであると思われるものに対してMCVEを提供する必要があります](http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-私にとっては非常にシンプルなSQLクエリです) – Strawberry

+0

はい、いくつかのサンプルデータ、あなたが見たい出力を見せてください。 MCVE(サンプルデータを含むテーブルステートメントを作成)を追加するとすばらしいことになります。あなたが話していることを知っているが、私たちはそうではない。 – EoinS

答えて

1

を参照してくださいね上記の表の例では、あなたのLEFT JOINをINNER JOINをに変換しています。 CustomerGroupMember列にNULLを持つすべての行は、NULLが '1234'と等しくないため、除外されます。あなたは、ON句にその条件を移動する必要があります。

SELECT CustomerMember.* FROM CustomerMember 
LEFT JOIN 
CustomerGroupMember 
ON CustomerMember.id = CustomerGroupMember.MemberID 
AND CustomerGroupMember.CustomerID = '1234' 
WHERE 
CustomerMember.CustomerID = '1234' 
AND CustomerGroupMember.MemberID IS NULL; 

http://rextester.com/DLTQ86207

+0

多くの感謝!それは素晴らしい仕事でした。 – Blunick

関連する問題