Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails MySQL子查询计数_Mysql_Ruby On Rails_Count_Subquery - Fatal编程技术网

Rails MySQL子查询计数

Rails MySQL子查询计数,mysql,ruby-on-rails,count,subquery,Mysql,Ruby On Rails,Count,Subquery,我有两种型号: 产品 点击 我想得到所有的产品,有超过x点击 这些表如下所示: Products id , 在ruby中,代码可能看起来像products.select{p|p.clicks.size>x}。如何为mysql编写类似的查询 谢谢 试试这个: SELECT * FROM Products WHERE Id IN ( SELECT P.Id FROM Products P JOIN Clicks C ON P.

我有两种型号:

  • 产品
  • 点击
  • 我想得到所有的产品,有超过x点击

    这些表如下所示:

    Products
    
    id 
    
    ,

    在ruby中,代码可能看起来像
    products.select{p|p.clicks.size>x}
    。如何为mysql编写类似的查询

    谢谢

    试试这个:

    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
    
    试试这个:

    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
    

    为了有效地执行此操作,您可能需要研究如何使用计数器缓存。ActiveRecord内置了对这个概念的支持,它将使您不必进行子查询

    一些链接:


    要有效地执行此操作,您可能需要研究使用计数器缓存。ActiveRecord内置了对这个概念的支持,它将使您不必进行子查询

    一些链接:


    您只是在问如何编写SQL来执行此查询吗?或者你是在问如何在ActiveRecord/RailsLand中实现它?最后,我将在RailsArel中编写它。所以这很理想。您只是问如何编写SQL来执行此查询吗?或者你是在问如何在ActiveRecord/RailsLand中实现它?最后,我将在RailsArel中编写它。因此,这将是理想的。