Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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 连接仅使用一个表的两个不同查询的SQL_Mysql_Sql_Join_Group By - Fatal编程技术网

Mysql 连接仅使用一个表的两个不同查询的SQL

Mysql 连接仅使用一个表的两个不同查询的SQL,mysql,sql,join,group-by,Mysql,Sql,Join,Group By,基本上,我有一个包含员工信息的表: frs\U员工 我的最终结果应该是一个查询,返回经理的姓名(没有“mngnin”的人员,即前12名员工),以及他们管理的员工的姓名 我已经找到了如何返回串联的员工列表: SELECT (SELECT GROUP_CONCAT(empname) AS employees) FROM frs_Employee WHERE `mgrnin` <> '' GROUP BY `mgrnin` 但这本身就是一个令人头痛的问题 我还尝试过使用连接(我怀疑这

基本上,我有一个包含员工信息的表:

frs\U员工

我的最终结果应该是一个查询,返回经理的姓名(没有“mngnin”的人员,即前12名员工),以及他们管理的员工的姓名

我已经找到了如何返回串联的员工列表:

SELECT (SELECT GROUP_CONCAT(empname) AS employees)
FROM frs_Employee 
WHERE `mgrnin` <> ''
GROUP BY `mgrnin`
但这本身就是一个令人头痛的问题

我还尝试过使用连接(我怀疑这就是解决问题的方法),但我无法完全理解它。我还考虑过使用一个临时表,但我不确定是否能做到这一点


有什么好的、通用的解决方案吗?

您可以通过
左连接来处理这个问题:

SELECT m.empnin, GROUP_CONCAT(e.empname) AS employees
FROM frs_Employee m LEFT JOIN
     frs_Employee e
     ON e.mgrnin = m.empnin 
WHERE m.mgrnin IS NULL
GROUP BY m.empin;

另外请注意,
GROUP_CONCAT()

不需要子查询,关系只能是parent->child或者它可以有祖父母->parent->child等等?@JorgeCampos for description看起来只有带null的是manager是的,我理解。我问,因为这是一个常见的错误,从新的人不考虑深度的关系。这只是为了确定。在一个级别内,一个简单的左连接解决了问题,但如果它比像在mysql中管理Phill的John manages Peter这样的多,那么它就不是那么简单了。不幸的是,只有一个级别的deep-parent->child没有给我需要的答案。它只返回经理和他们的id。
SELECT m.empnin, GROUP_CONCAT(e.empname) AS employees
FROM frs_Employee m LEFT JOIN
     frs_Employee e
     ON e.mgrnin = m.empnin 
WHERE m.mgrnin IS NULL
GROUP BY m.empin;