У меня есть следующие объекты:
СОТРУДНИК (id, имя, имя, ...)
ПРОЕКТ (id, ...)
EMPLOYEE_PROJECT (employee_id, project_id, ...)
Сотрудник может работать над несколькими проектами, а над проектом может работать более одного сотрудника, поэтому для их связи используется таблица EMPLOYEE_PROJECT.
Я хотел бы создать в своем приложении (PHP / MySQL) форму для данного ИД ПРОЕКТА с флажком рядом с именем каждого сотрудника, который будет отображаться как проверенный, если сущность для этого идентификатора сотрудника существует для этого идентификатора проекта в таблицу EMPLOYEE_PROJECT, которая позволит пользователю проверить или снять флажок с любого сотрудника, а затем нажать кнопку «обновить», чтобы добавить / удалить выбранных / невыбранных сотрудников из проекта, добавив / удалив записи в таблице EMPLOYEE_PROJECT.
Я могу использовать оператор IF для отображения «проверено» на любом объекте, который существует в таблице EMPLOYEE_PROJECT. Мои проблемы:
Правильное формирование запроса для получения списка. Если я получаю список сотрудников по СОЕДИНЕНИЮ СОТРУДНИКА НА EMPLOYEE_PROJECT, он показывает только сотрудников, которые были вовлечены в проект, а не всех сотрудников. Я могу сделать LEFT JOIN, чтобы показать все, но это будет повторять имена сотрудников, которые имеют несколько проектов, и я хочу показать каждое имя только один раз. Если я добавлю GROUP BY employee.id, я смогу получить правильный список только одного из каждого сотрудника, однако результаты не обязательно соответствуют правильному project_id. Если я добавлю HAVING с project_id, я потеряю сотрудников, которых нет в проекте (имейте в виду, что я хочу перечислить ВСЕХ сотрудников, но показываю чек только рядом с теми, которые в данный момент находятся в проекте).
Предполагая, что я выяснил # 1 и могу перечислить всех сотрудников и отобразить чек рядом с теми, которые существуют как сущность EMPLOYEE_PROJECT для указанного проекта, как я могу разрешить изменение флажков пользователем, а затем отправлено и имеет одно действие отправки добавить / удалить соответствующие объекты из таблицы EMPLOYEE_PROJECT?
Большое спасибо !!