如何用sum连接几个表

问题描述 投票:2回答:1

我想按访问次数对类别进行排序

类别有任务,任务有访问。我有四张桌子:

1)visits
     -id

2)category 
    -id

3)tasks
    -id
    -category_id

4)task_visit
   -task_id
   -visit_id

我现在所拥有的:

通过访问排序任务

SELECT count(task_id) as count, task_id
FROM task_visit
GROUP BY task_id
ORDER BY count DESC;

-join类别与任务

SELECT *
FROM categories
JOIN tasks
    ON categories.id = tasks.category_id
ORDER BY categories.id;

-try连接类别,包括任务和计数访问(不起作用),下一个按类别汇总

SELECT *
FROM categories
JOIN tasks
    ON categories.id = tasks.category_id
ORDER BY categories.id
JOIN
(
    SELECT count(task_id) as count, task_id
    FROM task_visit
    GROUP BY task_id
    ORDER BY count
) ON tasks.id = task_visit.task_id;

那么,如何按类别访问类别?

php mysql sql database join
1个回答
2
投票

您只需要在categorytaskstask_visit表之间进行连接,并按类别进行聚合:

SELECT
    c.id,
    COUNT(tv.visit_id) AS cnt
FROM category c
LEFT JOIN tasks t
    ON c.id = t.category_id
LEFT JOIN task_visit tv
    ON tv.task_id = t.id
GROUP BY
    c.id
ORDER BY cnt DESC;
© www.soinside.com 2019 - 2024. All rights reserved.