我正在尝试找到属于超市的水果的总计数,这些水果没有关联的项强>记录。
我的关系是:超市有很多水果,超市有很多东西。项目通过external_upc代码链接到水果。如何在项目中找不到相应条目的特定超市的水果表中的记录数量?
我不知道从哪个查询开始,我想我需要一个Left Join或NOT IN来表示我的where子句。但是,将不胜感激。
答案 0 :(得分:0)
如果没有更多信息,我会猜测一些事情,但可能的解决方案可能是:
supermarket.fruits.where(external_upc: nil).count
'supermarket'
是代表您要搜索的超市的对象,因此'supermarket.fruits'
将为您提供该市场的所有成果。
然后,我假设如果一个水果没有链接的项目,那么它的external_upc代码将为nil,因此'where(external_upc: nil)'
将为您提供水果(在您的超市中)没有链接的项目。
最后我们使用'.count'
来...计数。
答案 1 :(得分:0)
我能够通过使用EXCEPT查询找到我要找的东西。
Select COUNT(item_id)
FROM (
SELECT item_id
FROM fruits
WHERE fruits.active = 't' AND fruits.supermarket_id = 2
EXCEPT
SELECT externa;_upc
FROM items) f;