我有一个表包含所有可下载项的记录,另一个表包含每个下载的记录,其中包括下载日期和项目的ID以及下载它的用户.
当我从数据库中获取项目列表时,我希望查询查找项目下载的次数,并将其与其他项目数据一起包含.
这是我的SQL:
SELECT t1.*,
(SELECT COUNT(*)
FROM tl_downloads
WHERE item_id = t1.id
AND download_date > ?)
AS downloads_count
FROM tl_items AS t1
ORDER BY downloads_count DESC
Run Code Online (Sandbox Code Playgroud)
上面的查询工作正常,我在结果中得到一个名为'downloads_count'的额外列,其中包含正确的计数,但它不会让我按此值排序.
如果能够通过子查询中返回的值对结果进行排序,我需要做什么?
如果您需要更多信息,请告诉我们!
编辑 - 示例数据
tl_items tl_downloads
id name id item_id download_date
1 Item 1 1 1 1385964000
2 Item 2 2 1 1385964000
3 Item 3 3 3 1385964000
Run Code Online (Sandbox Code Playgroud)
我期望的结果是:
Item 1 - Downloads 2
Item 3 - Downloads 1
Item 2 - Downloads 0
Run Code Online (Sandbox Code Playgroud)
谢谢
Joh*_*Woo 12
尝试,
SELECT t1.*,
s.totalCount AS downloads_count
FROM tl_items AS t1
LEFT JOIN
(
SELECT item_id, COUNT(*) totalCount
FROM tl_downloads
WHERE download_date > ?
GROUP BY item_id
) s ON s.item_id = t1.id
ORDER BY downloads_count DESC
Run Code Online (Sandbox Code Playgroud)