2014-03-03 31 views
0

我在MYSQL基地有3个表,我有比较多少时间有各自USER_ID各2第一个表(表1和表2)MYSQL计数OCCURENCES separatly从2个表

这里我的表1:

USER_ID

  • d
  • ...

这里是我的表2:

USER_ID

  • 一个
  • Ç
  • 一个
  • ...

这里是我的表3(与USER_ID和昵称之间的连接):

USER_ID //昵称

  • 一个//鲍勃
  • 乙//乔
  • Ç//汤姆
  • ...

我想获得这样的结果:

昵称//计数从表出现1 //从表2

  • 鲍勃// 1 // 2
  • 乔// 4 // 0
  • 汤姆// 0 // 2计数出现

我没有成功的瞬间separatly每个表算,我得到了每个昵称:( 能不能帮我找到合适的MYSQL请求一个全球性的结果呢? - ...

+0

你能自己解决这个问题的任何部分? – Strawberry

回答

0

这种类型的查询有点棘手,因为有些名称可能不在第一个表中,有些名称可能不在第二个表中。要真正解决这类问题,您需要预先汇总每个查询的结果。要得到所有的名字,你需要一个left outer join

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; 
+0

非常感谢!你做了我的一天:D – user2750493