2017-12-27 16 views
2

訪問数別に並べ替えカテゴリを並べ替えたい合計で複数のテーブルを結合するには

カテゴリにはタスクがあり、タスクには訪問があります。

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

が参加-tryタスクとカテゴリ-join訪問

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

によって

-sortタスク:

1)visits 
    -id 

2)category 
    -id 

3)tasks 
    -id 
    -category_id 

4)task_visit 
    -task_id 
    -visit_id 

私が現時点で持っている何を:私は4つのテーブルを持っています仕事とカウントの訪問(仕事していない)のカテゴリは、次のカテゴリーでそれを合計すると

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; 

このように、番号を訪問してカテゴリを並べ替える方法はありますか?

+0

あなたは[ポスト](HTTPSのようにテーブルを追加することができます://メタ。 stackexchange.com/questions/220127/how-to-make-tables-in-good-format-in-asking-questions-here-which-is-standstand)? – dev8989

+1

サンプルデータと予想される結果は何ですか? – DineshDB

答えて

2

あなただけのカテゴリ別に集約とともに、categorytasks、そしてtask_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; 
関連する問題