我有两张桌子:
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)
答案 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