【发布时间】:2017-11-04 02:49:18
【问题描述】:
我有一张表 [seller]、[advert] 和 [sale]。
由于我的公司运作方式的怪癖,可以将销售的卖家更改为另一个卖家(让我们称之为孤儿销售),但 [sale] 表已更新以反映来自新卖家。
我想计算只有孤儿销售的用户的孤儿销售价格。
在获得价格之前,我什至无法创建只有孤儿销售的用户列表。
我正在尝试使用 where 为 null 进行左连接,这样我就可以获得那些没有销售的广告,然后使用 count() = 0 来获得那些没有销售的用户。
SELECT seller.id
FROM seller
JOIN advert ON advert.seller_id = seller.id
JOIN sale orphan ON advert.id = orphan.advert_id
JOIN sale accomplished_sale ON advert.id = accomplished_sale.advert_id
WHERE orphan.id IS NULL
GROUP BY seller.id
HAVING count(accomplished_sale.id) = 0
但是,我得到的是每个卖家至少有 1 次销售但没有销售,但有其他广告有销售。
鉴于 advert-sale 的关系是 n->1 我猜一个普通的连接只是一个左连接,对吧?卖家广告也会发生同样的事情。
我做错了什么?有任何想法吗?
【问题讨论】: