Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL分别从两个表中计算出现次数_Mysql_Count_Group By - Fatal编程技术网

MYSQL分别从两个表中计算出现次数

MYSQL分别从两个表中计算出现次数,mysql,count,group-by,Mysql,Count,Group By,我的MYSQL数据库中有3个表,我必须比较第一个表(表1和表2)中每个表中每个用户的ID出现的时间 这是我的表1: 用户ID A B A D 这是我的表2: 用户ID A C A 这是我的表3(用户ID和昵称之间有链接): 用户ID//昵称 A/鲍勃 乔 C//Tom 我希望得到这样的结果: 昵称//计算表1中的出现次数//计算表2中的出现次数 鲍勃//1//2 乔//4//0 汤姆//0//2 我没有立即成功地从每个表中分别计数,我得到了每个昵称的全局结果:( 你能帮我找

我的MYSQL数据库中有3个表,我必须比较第一个表(表1和表2)中每个表中每个用户的ID出现的时间

这是我的表1:

用户ID

  • A
  • B
  • A
  • D
这是我的表2:

用户ID

  • A
  • C
  • A
这是我的表3(用户ID和昵称之间有链接):

用户ID//昵称

  • A/鲍勃
  • C//Tom
我希望得到这样的结果:

昵称//计算表1中的出现次数//计算表2中的出现次数

  • 鲍勃//1//2
  • 乔//4//0
  • 汤姆//0//2
我没有立即成功地从每个表中分别计数,我得到了每个昵称的全局结果:( 你能帮我找到正确的MYSQL请求吗?
-…

这种类型的查询有点棘手,因为有些名称可能不在第一个表中,而另一些名称可能不在第二个表中。要真正解决这种类型的问题,您需要预先聚合每个查询的结果。要获取所有名称,您需要一个
左外部联接

select t3.name, coalesce(cnt1, 0) as cnt1, coalesce(cnt2, 0) as cnt2
from table3 t3 left outer join
     (select name, count(*) as cnt1
      from table1
      group by name
     ) t1n
     on t3.name = t1n.name left outer join
     (select name, count(*) as cnt2
      from table2
      group by name
     ) t2n
     on t3.name = t1n.name;

你能自己解决这个问题的任何部分吗?非常感谢!你完成了我的任务:D