Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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_Sql - Fatal编程技术网

MySQL-连接两个表,组和计数

MySQL-连接两个表,组和计数,mysql,sql,Mysql,Sql,我有两张桌子: reviewStatusPhases - id|name 及 reviewStatusPhases表中插入了记录(活动、非活动、暂停、终止…),并且userPhase为空 这些表格通过网络连接 userPhase.reviewStatusPhase_id = reviewStatusPhases.id 一对一 是否有可能在一个查询中我得到所有reviewStatusPhases,并告知每个阶段有多少用户?在这种情况下,我会得到如下结果: Active (0 Users) I

我有两张桌子:

reviewStatusPhases - id|name

reviewStatusPhases表中插入了记录(活动、非活动、暂停、终止…),并且userPhase为空

这些表格通过网络连接

 userPhase.reviewStatusPhase_id = reviewStatusPhases.id
一对一

是否有可能在一个查询中我得到所有reviewStatusPhases,并告知每个阶段有多少用户?在这种情况下,我会得到如下结果:

Active (0 Users)
Inactive (0 Users)
On Pause (0 Users)
Terminated (0 Users)

我在这里做了一些假设(例如,连接中的内部连接与左连接,以及计数中的不同),但听起来你只是想

SELECT reviewStatusPhases.name, COUNT(DISTINCT userPhase.user_id)
FROM userPhase INNER JOIN reviewStatusPhases
   ON userPhase.reviewStatusPhase_id = reviewStatusPhases.id
GROUP BY reviewStatusPhases.name

我在这里做了一些假设(例如,连接中的内部连接与左连接,以及计数中的不同),但听起来你只是想

SELECT reviewStatusPhases.name, COUNT(DISTINCT userPhase.user_id)
FROM userPhase INNER JOIN reviewStatusPhases
   ON userPhase.reviewStatusPhase_id = reviewStatusPhases.id
GROUP BY reviewStatusPhases.name

使用左连接,如下所示:

SELECT COUNT(m.UserId) FROM Table1 m 
LEFT JOIN Table2 k ON k.StatusId = m.StatusId
WHERE k.Status = 'Inactive' 
SELECT r.name as `name`, count(u.id) as `count` FROM reviewStatusPhases r LEFT OUTER JOIN userPhase u ON r.id = u.reviewStatusPhase_id GROUP BY r.name

您可以轻松地使用状态列跟踪用户及其活动。在您的情况下,ReviewStatus

使用
左连接
,如下所示:

SELECT COUNT(m.UserId) FROM Table1 m 
LEFT JOIN Table2 k ON k.StatusId = m.StatusId
WHERE k.Status = 'Inactive' 
SELECT r.name as `name`, count(u.id) as `count` FROM reviewStatusPhases r LEFT OUTER JOIN userPhase u ON r.id = u.reviewStatusPhase_id GROUP BY r.name

您可以轻松地使用状态列跟踪用户及其活动。对于您的情况,ReviewStatus

我希望以下内容将有所帮助

SELECT RPS.Name,  COUNT(UP.user_id) 
FROM reviewStatusPhases RPS
LEFT OUTER JOIN userphases UP ON RPS.id = UP.reviewStatusPhase_id
GROUP BY RPS.Name
ORDER BY RPS.Name

我希望以下内容会有所帮助

SELECT RPS.Name,  COUNT(UP.user_id) 
FROM reviewStatusPhases RPS
LEFT OUTER JOIN userphases UP ON RPS.id = UP.reviewStatusPhase_id
GROUP BY RPS.Name
ORDER BY RPS.Name

查询如下:

SELECT COUNT(m.UserId) FROM Table1 m 
LEFT JOIN Table2 k ON k.StatusId = m.StatusId
WHERE k.Status = 'Inactive' 
SELECT r.name as `name`, count(u.id) as `count` FROM reviewStatusPhases r LEFT OUTER JOIN userPhase u ON r.id = u.reviewStatusPhase_id GROUP BY r.name
  • 左侧外部与左侧的reviewStatusPhases连接以显示所有名称
  • 按修订的状态名称分组
  • 显示reviewStatusPhases用户名和用户id计数(忽略空值)

  • 查询如下:

    SELECT COUNT(m.UserId) FROM Table1 m 
    LEFT JOIN Table2 k ON k.StatusId = m.StatusId
    WHERE k.Status = 'Inactive' 
    
    SELECT r.name as `name`, count(u.id) as `count` FROM reviewStatusPhases r LEFT OUTER JOIN userPhase u ON r.id = u.reviewStatusPhase_id GROUP BY r.name
    
  • 左侧外部与左侧的reviewStatusPhases连接以显示所有名称
  • 按ReviewStatusPhase的名称分组
  • 显示reviewStatusPhases用户名和用户id计数(忽略空值)

  • Sure-LEFT JOIN reviewStatusPhases with userPhase(这样您仍然可以获取尚未存在用户条目的那些阶段的记录),按阶段id分组,然后计数…Sure-LEFT JOIN reviewStatusPhases with userPhase(这样您仍然可以获取尚未存在用户条目的那些阶段的记录),按阶段id分组,和计数…对于一次多个状态,您可以使用
    k.status IN('active','inactive')
    。虽然第二个答案更适合使用
    GROUP BY
    。对于一次多个状态,您可以使用
    k.status IN('active','inactive')
    。尽管第二个答案更适合使用
    groupby