Я сталкиваюсь с такой ситуацией:
У меня есть 4 таблицы:
Таблица пользователей:
+----+-------+
| id | name |
+----+-------+
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
+----+-------+
Таблица назначений:
+----+-----------------+
| id | assignment_name |
+----+-----------------+
| 11 | name1 |
| 12 | name2 |
| 13 | name3 |
+----+-----------------+
Представления:
+----+---------------+---------+
| id | assignment_id | user_id |
+----+---------------+---------+
| 1 | 11 | 3 |
| 2 | 12 | 1 |
| 3 | 11 | 2 |
+----+---------------+---------+
Group_submissions
+----+----------------+---------+
| id | submission_id | user_id |
+----+----------------+---------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 3 | 1 |
+----+----------------+---------+
В таблице отправлений есть assignment_id, чтобы указать, к какому назначению относится представление.
Также пользователи могут отправить групповое представление, где тот, кто выполняет отправку, попадает в таблицу представлений, а остальные go в таблицу group_submissions. Таким образом, это будет считаться одной отправкой, а не 2,3 ... N представлением в зависимости от того, сколько людей в группе.
Как я могу получить пользователей, которые отправили представление или приняли участие в групповом представлении в заданном назначении?
Результат должен возвращать пользователя или пользователей, которые находятся в таблице представлений или в таблице group_submissions на основе идентификатора назначения
Результат должен выглядеть что-то вроде этого:
+----+-------+
| id | name |
+----+-------+
| 1 | name1 |
| 2 | name2 |
+----+-------+
Это должно в основном возвращать таблицу пользователей.
Это то, что я пробовал до сих пор:
Это дает мне только пользователей, которые не находятся в таблице представлений, но находятся в group_submission
select * from users u
right join group_submissions gs on u.id = gs.student_id
right join assignment_submissions ass on gs.submission_id = ass.id
inner join assignments a on a.id = ass.assignment_id
where a.id = number
Это дает мне только одного пользователя, который сделал отправку (в таблице представлений)
select * from users u
right join assignment_submissions ass on u.id= ass.student_id
right join group_submissions gs on ass.id = gs.submission_id
inner join assignments a on a.id = ass.assignment_id
where a.id = number
Что должно присоединиться стратегия будет здесь? Или, может быть, объединения не являются правильным вариантом здесь.
ПРИМЕЧАНИЕ. Это база данных MySQL.