繁体   English   中英

Rails MySQL子查询计数

[英]Rails MySQL subquery count

我有两个模型:

  1. 产品
  2. 点击

我想获得点击次数超过x的所有产品。

这些表如下所示:

Products

id 

Clicks

id | product_id

在红宝石中,代码可能看起来像products.select {|p| p.clicks.size > x} products.select {|p| p.clicks.size > x} 一个人怎么可能为mysql写一个类似的查询?

谢谢!

为了有效地做到这一点,您可能希望研究使用计数器缓存。 ActiveRecord内置了对此概念的支持,它将使您不必进行子查询。

一些链接:

尝试这个:

SELECT *
FROM Products
WHERE Id IN
(
    SELECT 
        P.Id
    FROM Products P
       JOIN Clicks C
          ON P.Id = C.Product_ID
    GROUP BY P.ID
    HAVING COUNT(1) > x
) A

或者,如果您只需要产品ID

    SELECT 
        P.Id
    FROM Products P
       JOIN Clicks C
          ON P.Id = C.Product_ID
    GROUP BY P.ID
    HAVING COUNT(1) > x

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM