#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. Приятно! Клянусь пивом, приятель, спасибо за помощь, это гораздо менее сложно, чем то, к чему я направлялся, и я узнал кое-что для загрузки 🙂 🙂 🙂