私はこのクエリに苦労しています。私は2つのテーブルを持っています。クーポンと請求書番号のあるもの。請求書番号と顧客名が記載されたもの。
特定のクーポンを使用していない顧客を取得する必要があります。
ここにテーブルがあります:
プロモーション テーブル:
Promotions
Invoice | Coupon
----------------
1 | couponA
2 | couponB
3 | couponB
注文表:
Orders
Invoice | Customer
------------------
1 | Jack
2 | Jack
3 | Jill
ジャックはクーポン A と B を使用しました。ジルはクーポン B のみを使用しました。
私のクエリがクーポン A を使用していない選択された顧客である場合、ジルを取得する必要があります。
これは機能しますが、不器用で遅いようです。より良い方法はありますか?
SELECT Customer
FROM Promotions INNER JOIN Orders
ON Promotions.Invoice = Orders.Invoice
WHERE Customer NOT IN(
SELECT Customer
FROM Promotions INNER JOIN Orders
ON Promotions.Invoice = Orders.Invoice
WHERE Coupon = couponA)
GROUP BY Customer
ご覧いただきありがとうございます。
編集: これは SQLFiddle スキーマです http://sqlfiddle.com/#!2/21d31/6