СОЕДИНЕНИЕ MySQL или ПОДЗАПРОС при НАБОРЕ из текущей строки результата

#mysql

#mysql

Вопрос:

У меня есть таблица с именем 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 ...
  

Который работает.

Приветствуется любой совет 🙂 Кажется простой проблемой, но по какой-то причине ускользает от меня..

Комментарии:

1. Каков ваш ожидаемый результат?

2. Я обновил свой вопрос примером результата (спасибо :))

Ответ №1:

Соедините таблицы и объедините с group_concat() .
Функция find_in_set() может использоваться для привязки каждого сотрудника к каждому подразделению.

Предполагая, что тип данных столбца active в employees является 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 |
  

Комментарии:

1. Приятно! Клянусь пивом, приятель, спасибо за помощь, это гораздо менее сложно, чем то, к чему я направлялся, и я узнал кое-что для загрузки 🙂 🙂 🙂