Работает над выбором всех пользователей в html <select>
, которого там еще нет.
Я работаю над «делом» на сайте, где я могу ставить пользователей на дела. Пользователи могут быть наложены на несколько дел одновременно. Я делаю HTML <select>
со всеми пользователями, которых могу добавить в дело, и важно, чтобы уже существующие пользователи в этом деле не отображались.
У меня есть 3 таблицы SQL. Users
, Cases
и Junc_jobs
. Junc_ J
obs работает как отношения «многие ко многим» для связи пользователей и дел. Все пользователи, которых я хочу выбрать: fk_role > 1
.
USERS
+-------+------------+----------+
| id | firstName | fk_case |
+-------+------------+----------+
| 05 | Rasmus | 57 |
| 06 | Ulrik | 57 |
| 10 | Nick | 59 |
| 12 | Lisa | 59 |
| 22 | Marco | 65 |
| 23 | Frederik | 63 |
+-------+------------+----------+
CASES
+-------+------------+
| id | caseName |
+-------+------------+
| 57 | case 1 |
| 59 | case 2 |
| 63 | case 3 |
| 64 | case 4 |
| 65 | case 5 |
+-------+------------+
JUNC_JOBS
+-------+------------+--------------+
| id | fk_case | fk_employee |
+-------+------------+--------------+
| 1 | 57 | 5 |
| 2 | 59 | 5 |
| 3 | 64 | 23 |
| 4 | 65 | 23 |
| 5 | 65 | 22 |
| 6 | 66 | 10 |
| 7 | 61 | 22 |
| 8 | 60 | 5 |
| 9 | 63 | 5 |
| 10 | 66 | 22 |
| 11 | 62 | 12 |
+-------+------------+--------------+
Пока я пытался сделать что-то вроде этого:
SELECT users.id, users.firstName, users.lastName, junc_jobs.fk_case FROM users
LEFT JOIN junc_jobs ON users.id = junc_jobs.fk_employee
WHERE (fk_case IS NULL AND users.fk_role > 1) OR (fk_case != 66 AND users.fk_role > 1)
ORDER BY firstName
НО, если junc_jobs
содержит пользователей с несколькими случаями, он перестает работать. Мы получаем что-то вроде этого:
+-------+------------+----------+
| id | firstName | fk_case |
+-------+------------+----------+
| 06 | Ulrik | 57 |
| 05 | Rasmus | 57 |
| 12 | Lisa | 59 |
| 10 | Nick | 59 |
| 05 | Rasmus | 59 |
| 23 | Frederik | 63 |
| 06 | Macro | 63 |
| 23 | Frederik | 64 |
| 23 | Frederik | 65 |
| 22 | Marco | 65 |
| 10 | Nick | 65 |
+-------+------------+----------+
Как видите, пользователи, находящиеся на fk_case = 66
, удаляются, но если этот пользователь уже находится в других случаях, они все равно отображаются. Пользователь с id = 22
находится на fk_case 66
, и этот пользователь полностью удален из списка.
Я пытался использовать GROUP BY ID
, чтобы показать только одного из каждого пользователя, но также отображаются пользователи, которые уже находятся в деле и имеют другие дела.