如何获得大多数下载记录

时间:2016-10-24 08:32:06

标签: php mysql sql

我有两张桌子:

wallpapers

id     img        cat_id

downloads

 id     wall_id
 1       10
 2       10
 3       2
 .       .

我想从特定的cat_id获得最多下载的所有壁纸。

我的疑问:

SELECT *
FROM wallpapers
    WHERE cat_id = 10 
    AND id IN 
    (SELECT wall_id
        FROM (SELECT wall_id, count(*) 
                FROM downloads 
                GROUP BY wall_id
                ORDER BY count(*) DESC))

但它什么也没有返回!

我的框架是Codeingiter

    $rows = $this->db->query($sql);

    var_dump($rows);
    return;

输出:

bool(false) 

1 个答案:

答案 0 :(得分:2)

只需按wall_id对它们进行分组,这样就可以获得每个wall_id的总下载量 按他们的顺序排列

ORDER BY count(downloads.wall_id) DESC

并添加限制

LIMIT 3

假设您希望获得前3个最多下载次数 所以你的最终查询将是这样的

SELECT   * 
FROM     wallpapers 
JOIN     downloads 
ON       wallpapers.id = downloads.wall_id 
GROUP BY downloads.wall_id ORDER BY count(downloads.wall_id) DESC limit 3