考虑以下三个表:
Table: A Table: B Table: C
+----+-----+ +-----+--------+ +--------+----------+
| id | cid | | cid | cat_id | | cat_id | cat_name |
+----+-----+ +-----+--------+ +--------+----------+
| 1 | 33 | | 33 | 6 | | 1 | AAAAA |
| 2 | 33 | | 33 | 20 | | 2 | BBBBB |
| 3 | 33 | | 33 | 59 | | 3 | CCCCC |
| 4 | 33 | | 33 | 88 | | 4 | DDDDD |
| 5 | 33 | | 35 | 8 | | 5 | EEEEE |
| 6 | 86 | | 86 | 1 | | 6 | FFFFF |
| 7 | 86 | | 86 | 14 | | 7 | GGGGG |
| 8 | 99 | | 86 | 45 | | 14 | HHHHH |
| 9 | 100 | | 86 | 57 | | 20 | IIIII |
+----+-----+ | 86 | 59 | | 42 | JJJJJ |
| 86 | 94 | | 45 | KKKKK |
| 98 | 5 | | 57 | MMMMM |
| 99 | 42 | | 58 | NNNNN |
| 100 | 75 | | 59 | OOOOO |
+-----+--------+ | 75 | PPPPP |
| 88 | QQQQQ |
| 89 | RRRRR |
| 90 | SSSSS |
| 91 | TTTTT |
| 92 | UUUUU |
| 93 | VVVVV |
| 94 | WWWWW |
| 95 | XXXXX |
| 96 | YYYYY |
| 97 | ZZZZZ |
+--------+----------+
我想得到:
Result 1:
+-----+--------+----------+-------------+
| cid | cat_id | cat_name | Total_Click | Total_Click = count(cid) from table A
+-----+--------+----------+-------------+
| 33 | 6 | FFFFF | 5 |
| 33 | 20 | IIIII | 5 |
| 33 | 59 | OOOOO | 5 |
| 33 | 88 | QQQQQ | 5 |
| 86 | 1 | AAAAA | 2 |
| 86 | 14 | HHHHH | 2 |
| 86 | 45 | KKKKK | 2 |
| 86 | 57 | MMMMM | 2 |
| 86 | 59 | OOOOO | 2 |
| 86 | 94 | WWWWW | 2 |
| 99 | 42 | JJJJJ | 1 |
| 100 | 75 | PPPPP | 1 |
+-----+--------+----------+-------------+
最后,我想知道每个类别获得的点击次数。
Result 2: +----------+-------------+ | cat_name | Total_Click | +----------+-------------+ | AAAAA | 2 | | BBBBB | 0 | | CCCCC | 0 | | DDDDD | 0 | | EEEEE | 0 | | FFFFF | 5 | | GGGGG | 0 | | HHHHH | 2 | | IIIII | 5 | | JJJJJ | 1 | | KKKKK | 2 | | LLLLL | 0 | | MMMMM | 2 | | NNNNN | 0 | | OOOOO | 7 | | PPPPP | 1 | | QQQQQ | 5 | | RRRRR | 0 | | SSSSS | 0 | | TTTTT | 0 | | UUUUU | 0 | | VVVVV | 0 | | WWWWW | 2 | | XXXXX | 0 | | YYYYY | 0 | | ZZZZZ | 0 | +----------+-------------+
谢谢!
答案 0 :(得分:0)
您可以通过JOIN
SELECT a.cid, b.cat_id, c.cat_name, COUNT(a.id) as Click
FROM Table_c c
JOIN Table_b b ON c.cat_id = b.cat_id
JOIN Table_a a ON a.cid = b.cid
GROUP BY c.cat_name, a.cid, b.cat_id
针对您的第二个结果尝试以下查询
SELECT c.cat_name, IFNULL(COUNT(a.id), 0) as Total_Click
FROM Table_c c
LEFT OUTER JOIN Table_b b ON c.cat_id = b.cat_id
LEFT OUTER JOIN Table_a a ON a.cid = b.cid
GROUP BY c.cat_name