Как сделать в Mysql один запрос, чтобы получить имя пользователя и тот же запрос, чтобы получить другое имя пользователя из той же таблицы пользователей? - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть две таблицы:

Users                          Mail
-------                        ------
ID | Username                  ID | UserID | SenderID   | Something
---------------                ---------------------------------------------------
1  | A                         1  |  2     |  1         | Becoming Mad with SQL
2  | B                         2  |  3     |  4         | Mee too

Я пытаюсь это:

SELECT *
 a.userid, a.senderid, a.something,
 b.username
FROM
 mail a
 LEFT JOIN users b on b.id=a.senderid
WHERE
 a.id='1'

Вывод / похож:

a.Userid | a.senderid | a.something | b.username
--------------------------------------------------
2      | 1            | becoming..  | A

Мой ожидаемый вывод похожthis (имя пользователя B и A в одной строке):

Userid | senderid | something | username | Username of UserID
---------------------------------------------------------------
2      | 1        | becoming..| A        | B

Как я могу получить идентификатор пользователя и его имя пользователя в одном запросе?Потому что у меня уже есть left join users b on b.id=a.senderid

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Используйте две копии таблицы пользователей, одну для отправителя, одну для пользователя.

   SELECT a.userid, 
           a.senderid, 
           a.something,  
           b.username,
           c.username 
   FROM  mail a,  
         users b,
         users c
   WHERE  a.id='1'
   AND  b.id=a.senderid
   AND  c.id=a.Userid 

Убедитесь, что вы добавили индексы в свои таблицы также для столбца id почты и столбцов senderid и id пользователя - они помогут ускорить процесс.

2 голосов
/ 23 февраля 2012
SELECT  a.userid, 
        a.senderid, 
        a.something,
        b.username, 
        c.username
FROM    mail a
        LEFT JOIN users b ON b.id = a.senderid
        JOIN      users c ON c.id = a.UserID
WHERE   a.id='1'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...