Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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 - Fatal编程技术网

当前结果行集合上的MySQL联接或子查询

当前结果行集合上的MySQL联接或子查询,mysql,Mysql,我有一个名为DEPARTMENTS的表,其中有一个名为EMPLOYEES的列,它是一个集合: department | employees ---------------------- sales | 100,107 support | 120,121 和另一个名为EMPLOYEES的表: employee | active ----------------- 100 | true 107 | false 120 | true 121 |

我有一个名为DEPARTMENTS的表,其中有一个名为EMPLOYEES的列,它是一个集合:

department | employees
----------------------
sales      | 100,107
support    | 120,121
和另一个名为EMPLOYEES的表:

employee | active
-----------------
100      | true
107      | false
120      | true
121      | true
我试图避免在结果中循环并建立另一个连接,只是为了确定员工是否处于活动状态。基本上,我需要另一个包含活跃员工的专栏,结果如下:

department | employees | active
-------------------------------
sales      | 100,107   | 100
我尝试了我认为显而易见的方法:

SELECT departments.*, (SELECT GROUP_CONCAT(employee) FROM employees WHERE employee IN(departments.employees) AND active = true) AS active ...
它失败了,我不明白为什么,因为如果我手动执行此操作:

SELECT departments.*, (SELECT GROUP_CONCAT(employee) FROM employees WHERE employee IN(100,107) AND active = true) AS active ...
这很有效


任何建议都值得赞赏:)似乎是一个简单的问题,但出于某种原因,我无法理解。

加入表并使用
group_concat()进行聚合

函数
find_in_set()
可用于将每个员工链接到每个部门。

假设
employees
active
列的数据类型为
Boolean

select d.department, d.employees,
       group_concat(e.employee) active
from departments d left join employees e
on find_in_set(e.employee, d.employees) and e.active
group by d.department, d.employees
请参阅。

如果
active
的数据类型为
varchar
更改
ON
子句:

and e.active = 'true'
请参阅。

结果:

| department | employees | active  |
| ---------- | --------- | ------- |
| sales      | 100,107   | 100     |
| support    | 120,121   | 120,121 |

你期望的结果是什么?我用一个示例结果更新了我的问题(谢谢:)很好!伙计,谢谢你的帮助,比我要去的地方简单多了,我学到了一些东西:):)