@borlerone

C запросом mysql?

Прошу помощи с казалось бы простым запросом.

Есть таблица сообщений: message_id, message_from, message_to. Здесь message_from, message_to — это ID пользователей от кого и кому данное сообщение.

Есть таблица пользователей user_id, login.

Как построить запрос, чтобы вывести одновременно message_id, login от кого, login кому?

Если нужно было бы вывести только один message_id и логин — понятно что делается через LEFT JOIN users ON user_id = message_from. А как вывести логины сразу обоих пользователей?
  • Вопрос задан
  • 2394 просмотра
Решения вопроса 1
ramilexe
@ramilexe
Сделать два джоина

SELECT m.message_id, u1.login, u2.login
FROM messages m
LEFT JOIN users u1 ON m.message_from=u1.user_id
LEFT JOIN users u2 ON m.message_to=u2.user_id
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sajgak
@sajgak
select users_from.login as login_from, users_to.login as login_to…
LEFT JOIN users as users_from ON users_from.user_id = messages.message_from,
LEFT JOIN users as users_to ON users_to.user_id = messages.message_to,
Ответ написан
@Demetros
Сделайте 2 запроса.
Первый выбирает сообщение, включая ID пользователей, с ним связанных.
Второй выбирает обоих пользователей по ID.

В случае использования JOIN изменение в любой таблице влечет за собой сброс кеша запроса в базе.
В случае двух запросов изменения например в таблице messages не будут сбрасывать кеш запроса по таблице пользователей, и наоборот.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы