2 つのテーブルがあるこの複数結合の問題に頭を悩ませようとしています。
INTERESTED_IN
email item
-----------------------
bob@email.com widgetA
karen@email.com widgetA
karen@email.com widgetB
sue@email.com widgetC
tony@email.com widgetA
tony@email.com widgetB
tony@email.com widgetC
PURCHASED
email item
-----------------------
bob@email.com widgetA
karen@email.com widgetA
tony@email.com widgetB
julie@email.com widgetC
目的: Interesting_inテーブルと purchase テーブルに存在する人のメールとアイテムを返しますが、purchased テーブルには存在しないアイテムのみを返します。したがって、結果のテーブルは次のようになります
email item
-----------------------
karen@email.com widgetB
tony@email.com widgetA
tony@email.com widgetC
概念的にはこれを行う方法を知っていますが、データセットが非常に大きくなる可能性があるため、これを行う最も効率的な方法に頭を悩ませています。誰かがこれを行うための最良の方法について教えてくれますか?
ありがとう!
アップデート
SELECT email, item
FROM (
SELECT i.email, i.item
FROM interested_in i
INNER JOIN purchased p ON i.email = p.email
)
MINUS
SELECT email, item
FROM purchased