Я пытаюсь запустить запрос, чтобы получить мои слоты, рабочий является бесплатным. SQL схемы для 'работы' таблица выглядит следующим образом:Объедините несколько строк в один столбец
+------------+----------+------------+----------+
| workID | workerID | workerType | workTime |
+------------+----------+------------+----------+
| 0000000001 | 1 | agents | 1 |
| 0000000002 | 1 | agents | 2 |
| 0000000003 | 1 | agents | 4 |
| 0000000004 | 1 | agents | 4 |
+------------+----------+------------+----------+
Другая таблица 'рабочий' как:
+----------+------------+
| workerID | workerName |
+----------+------------+
| 1 | John Doe |
+----------+------------+
мне нужен выход следующим образом:
+------------+-----------+-----------+-----------+-----------+
| workerType | timeslot1 | timeslot2 | timeslot3 | timeslot4 |
+------------+-----------+-----------+-----------+-----------+
| John Doe | Occupied | Occupied | Free | Occupied |
+------------+-----------+-----------+-----------+-----------+
Но по моему запросу, если я GROUP BY wo.workerID
, тогда я получаю
+------------+-----------+-----------+-----------+-----------+
| workerName | timeslot1 | timeslot2 | timeslot3 | timeslot4 |
+------------+-----------+-----------+-----------+-----------+
| John Doe | Free | Free | Free | Occupied |
+------------+-----------+-----------+-----------+-----------+
МОЙ TRY:
SELECT wo.workerName,
CASE
WHEN w.workTime = 1 THEN 'Occupied'
ELSE 'Free'
END AS timeSlot1,
CASE
WHEN w.workTime = 2 THEN 'Occupied'
ELSE 'Free'
END AS timeSlot2,
CASE
WHEN w.workTime = 3 THEN 'Occupied'
ELSE 'Free'
END AS timeSlot3,
CASE
WHEN w.workTime = 4 THEN 'Occupied'
ELSE 'Free'
END AS timeSlot4
FROM works AS w
INNER JOIN workers AS wo ON wo.workerID = w.workerID
WHERE w.workerType = 'agents' AND
w.workerID = 1
GROUP BY wo.workerID;
Операции вашего случая не различаются WorkID. Все они смотрят на один и тот же ряд. –
Я так понимаю, даже если рабочий занят в одном заданном рабочем времени через задания, я хочу вернуть его как занятое другое. –
Зачем вам нужно сворачивать данные в РСУБД? Не можете ли вы просто присоединиться к таблицам и повернуть (если это необходимо) в код приложения? – eggyal