Mysql SQL从多个表中选择数据和计数,因为每个表中都有一个公共列

Mysql SQL从多个表中选择数据和计数,因为每个表中都有一个公共列,mysql,sql,count,Mysql,Sql,Count,鉴于以下三个表格: 我想得到: 最后,我想知道每个类别的点击次数 谢谢 您的第一个结果可以通过执行联接来获得 请尝试以下查询以获得第二个结果 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 B

鉴于以下三个表格:

我想得到:

最后,我想知道每个类别的点击次数


谢谢

您的第一个结果可以通过执行联接来获得

请尝试以下查询以获得第二个结果

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

你的问题是什么?您似乎有两个看起来完全不同的期望结果集。catid可以在表B中复制吗?如果稍微少一点的话abstract@GordonLinoff:最终,我希望得到结果2。但如果太复杂,结果1就是我想要的。@Tripkinetics:是的,catid可以在表B中复制。太棒了!非常感谢。
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 | +----------+-------------+
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