MySQL从两个表中选择查询

时间:2014-08-14 08:57:10

标签: mysql

我有两个表:用户工作

我需要写选择查询 从用户表中计算不同的名称,其中work_status = 1来自工作表

enter image description here

总数:3 John,1 Tom

我需要得到结果:
    John 2( 2,因为一个John work_status = 0 ant,这不计算
    汤姆1

我编写了可以计算不同名称的select,只需要比较work_status ..

SELECT name,COUNT(*) as num FROM users GROUP BY name

我的查询返回:

enter image description here

4 个答案:

答案 0 :(得分:2)

您的问题存在问题。所以这里有两个解决方案。

如果有三个不同的John在公司工作,这是您的查询

SELECT u.name, COUNT(*) as num 
FROM users u INNER JOIN works w ON w.user_id = u.id 
WHERE w.work_status = 1
GROUP BY u.name, u.id

如果公司中只有一名John在工作,那么您的查询是这样的:

SELECT u.name, COUNT(*) as num 
FROM users u INNER JOIN works w ON w.user_id = u.id 
WHERE w.work_status = 1
GROUP BY u.name

注意:如果三个John是同一个人,则应删除最后一个,并works表更改user_id = 3user_id = 4 user_id = 1 < / em>

答案 1 :(得分:1)

这个应该做的工作:

SELECT users.name,SUM(works.work_status) as num 
  FROM users,works 
  WHERE users.id=works.id 
  GROUP BY name

答案 2 :(得分:1)

这是一个简单的JOIN查询:

  SELECT u.name, COUNT(*) num
    FROM users u
    JOIN works w
      ON w.user_id = u.id
     AND w.work_status = 1
GROUP BY u.name

答案 3 :(得分:1)

SELECT 
  users.`name`,
  COUNT(*) num 
FROM
  users,
  works 
WHERE users.`id` = works.`user_id` 
  AND works.`work_status` = 1 
GROUP BY users.`name` ;