Запрос, многие-ко-многим, mysql
осваиваю sql
Помогите дополнить мой или написать новый запрос
Вот примерная схемка

Например, нам надо получить id и name Задачи и имя Пользователя, у которого id=2

На это у меня есть запрос
SELECT
usertasks.id,
tasks.id,
tasks.name,
users.firstName
FROM tasks, usertasks, users
WHERE tasks.id=usertasks.taskId AND users.id=usertasks.userId AND users.id=2
GROUP BY usertasks.id
НО, результат надо дополнить также именами Пользователей Соучастников Задачи.
Например, Вася работает на Задачей 2. Мы находим эту задачу {id: 2, name: зд2, firstName: Вася}, но также нам надо захватить Имя соучастника задачи Олега и тд

Ответы (1 шт):
Автор решения: Danil Apsadikov
→ Ссылка
Лучше не использовать декартово произведения в запросах, а использовать JOIN.
Пример того, как это можно реализовать:
- Сначала сделаем подзапрос, в котором найдем задачи пользователя с id = 2
SELECT userTask.taskId
INNER JOIN userTask ON user.id = userTask.userId
WHERE user.id = 2
- Затем делаем запрос, в котором берем все задачи, в которых участвует пользователь с id = 2 и при этом достаем других пользователей сокомандников
SELECT user.id, user.name, task.id, task.name
FROM user
INNER JOIN userTask ON userTask.userId = user.id
INNER JOIN task ON userTask.taskId = task.id
WHERE userTask.taskId IN (
SELECT userTask.taskId
INNER JOIN userTask ON user.id = userTask.userId
WHERE user.id = 2)
Как-то так, если что код не проверял. Возможно есть решение лучше.