Rails Scope的SQL查询,Disjoint?

时间:2014-08-29 15:39:49

标签: sql ruby-on-rails scopes

我正在尝试找到属于超市水果总计数,这些水果没有关联的强>记录。

我的关系是:超市有很多水果,超市有很多东西。项目通过external_upc代码链接到水果。如何在项目中找不到相应条目的特定超市的水果表中的记录数量?

我不知道从哪个查询开始,我想我需要一个Left Join或NOT IN来表示我的where子句。但是,将不胜感激。

2 个答案:

答案 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;