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