sql join на две колонки - PullRequest
       21

sql join на две колонки

3 голосов
/ 23 июня 2011

У меня есть две таблицы, как показано ниже:

Пользователи

  • ID
  • Имя пользователя
  • Электронная почта

Сообщения

  • ID
  • Сообщение
  • FROMUSER
  • TOUSER

FROMUSER и TOUSER имеют ссылку на внешний ключ для идентификатора в таблице Users.

Теперь я хочу получать сообщения, объединяющие пользователей с адресами электронной почты пользователя, как показано ниже

| ID | Message | FROMEMAIL | TOEMAIL |

Я мог бы написать запрос, как показано ниже.

SELECT Step1.*, 
       users.email as ToUser 
  FROM (SELECT messages.*, 
               users.email as fromuser 
          FROM messages 
          JOIN users on messages.fromuser = users.ID) as Step1 
  JOIN users on step1.touser = users.ID

Есть ли какой-нибудь простой способ добиться этого без подзапроса?

1 Ответ

12 голосов
/ 23 июня 2011

Просто присоединитесь к таблице «Пользователи» дважды:

SELECT Message, uf.Email AS FromEmail, ut.Email AS ToEmail
FROM Messages
JOIN Users uf ON Messages.FromUser = uf.Id
JOIN Users ut ON Messages.ToUser = ut.Id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...