Задать вопрос
ponich
@ponich
php,mysql,js

Запрос в базу с JOIN с нескольких таблиц?

Добрый день.
Интересует такой вопрос, а точней как составит правильно запрос mysql.
Есть несколько таблиц, вот их структура:

USER:
id | login | 
1 | Николай |
2 | Дмитрий |

TASK:
id | author_user_id | performer_user_id | task_message | status
1 | 1 | 2 | Задача 1 | 2

TASK_STATUS:
id | status
1 | Ожидает

Как составить составить правильно запрос так что бы mysql вернул мне:
id : 1
author_user_id : {login: Николай}
performer_user_id: {login: Дмитрий}
task_message: Задача 1
status: Ожидает
  • Вопрос задан
  • 2313 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `t`.`id`, `au`.`login`, `pu`.`login`, `t`.`task_message`, `ts`.`status`
    FROM `TASK` AS `t`
    LEFT JOIN `USER` AS `au` ON `au`.`id` = `t`.`author_user_id`
    LEFT JOIN `USER` AS `pu` ON `pu`.`id` = `t`.`performer_user_id`
    LEFT JOIN `TASK_STATUS AS `ts` ON `ts`.`id` = `t`.`status`
    WHERE ...
Ответ написан
Комментировать
@Nc_Soft
3 запроса делайте, это будет лучше.
И это не потому что я не знаю как джоин работает, а потому что джоины зло.
Ответ написан
@ylebedev
Если не сложно, скиньте SQL файл (точный экспорт таблиц).
Лень набивать в свою базу руками.

DBForge в граф. виде позволяет проектировать базу данных выдавая правильный вариант запроса.
Включая не позволяет запутаться в JOIN

SELECT
task.id,
task.message,
task_status.title,
user_profile.firstName,
user_profile.lastName,
user_profile_1.firstName AS performer_user_id
FROM task
LEFT JOIN task_status
ON task.status = task_status.id
LEFT JOIN user_profile
ON task.author_user_id = user_profile.user_id
LEFT JOIN user_profile user_profile_1
ON task.performer_user_id = user_profile_1.user_id

1
admin
adminovich
pertovich
О море мия гаднжубас
Ожидает

Добавил пару стобцов

Для SQL лучше использовать 1 длинный запрос, чем циклы 1000 мелких.

Я уже от циклов пострадал по старой школе php. В результате php гнул SQL по 50 000 запросов в сек.
потому что продукт вырос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы