У меня есть 3 таблицы в моей базе данных:MySQL - Как вернуть несколько результатов для каждого набора GROUP BY?
- employee_log
- job_log
- crew_log
Когда новое задание создается, сотрудник назначается ему, и поэтому запись является сделанные в таблице «crew_log».
То, что я пытаюсь сделать, - это получить каждого сотрудника с атрибутом type = 2 (что означает, что они являются супервизором) (from employee_log), а затем присоединиться к запросу crew_log.
Каждый сотрудник может иметь несколько активных заданий в «crew_log», поэтому цель состоит в том, чтобы вернуть ВСЕ активные задания для этого сотрудника в массиве.
Мой запрос до сих пор выглядит следующим образом:
SELECT el.id, cl.job_id
FROM employee_log AS el
JOIN crew_log AS cl
ON el.id=cl.employee_id
AND cl.start_date >= CURDATE()
WHERE el.type=2
GROUP BY cl.employee_id
Это, конечно, не правильный, но, возможно, это поможет визуализировать мой вопрос.
Я могу, конечно, сделать это по-другому ... Но я пытаюсь сделать все это один SQL запрос как для производительности и узнать что-то новое о SQL :)
Альтернатива для меня, чтобы использовать два в то время как циклы. Первый цикл получит каждого сотрудника с типом = 2, а затем в этом цикле я сделаю еще один SQL-запрос, чтобы получить все активные задания для этого сотрудника.
Должен быть лучший способ сделать это?
Пожалуйста, добавьте структуры трех таблиц к вашему вопросу. – nnichols
Я сам не получаю эти требования. Вероятно, добавив некоторые примеры данных из ваших таблиц (я думаю, 'job_log' будет ненужным), и ваш ожидаемый результат в табличном формате поможет. –