2013-04-25 63 views
0

我有一个MySQL数据库有两个表:尝试计数和加入的两个MySQL表

db.names

name | Level 
------------ 
bob 4 
john 3 
andy 2 
dave 1 

db.data

entry | user 
------------ 
dfds bob 
hdes bob 
sers john 
iuid dave 
yyuy john 

我试图做一个计数,将统计每个用户已经做了多少次,并显示他们的水平。所以点燃看起来像这样:

count(*) | user | Level 
----------------------- 
2   bob  4 
2   john 3 
1   dave 1 

我试过使用左连接和独特的联接,但似乎可以得到处理的逻辑。帮助将非常感谢

回答

4

您需要基本上使用INNER JOIN加入表,因为您只想显示两个表上都存在的记录。并且要计算它们的实例数量,您需要使用聚合函数COUNT()GROUP BY子句。

SELECT COUNT(*) TotalCount, 
     a.Name, 
     a.Level 
FROM names a 
     INNER JOIN data b 
      ON a.Name = b.user 
GROUP BY a.Name, a.Level 

为了进一步获得更多的知识有关加入,请访问以下链接:

输出

╔════════════╦══════╦═══════╗ 
║ TOTALCOUNT ║ NAME ║ LEVEL ║ 
╠════════════╬══════╬═══════╣ 
║   2 ║ bob ║  4 ║ 
║   2 ║ john ║  3 ║ 
║   1 ║ dave ║  1 ║ 
╚════════════╩══════╩═══════╝ 
+0

+1不错的答案。 – Kermit 2013-04-26 02:08:21