【发布时间】:2012-07-06 20:47:35
【问题描述】:
我正试图解决这个我有两个表的多连接问题
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
目标:返回interested_in 表和购买表中存在的人的电子邮件和物品,但只返回不在购买表中的物品。所以结果表是这样的
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
【问题讨论】:
-
为什么
sue@email.com widgetC不在结果集中?
标签: sql oracle left-join inner-join self-join