2016-05-13 3 views
0

Я следующий запрос:SQL с внутренним соединением и подзапрос

SELECT * FROM thread where sender = 135 or receiver = 135 order by updatedttm desc 

Этот запрос возвращает правильную запись, которая имеет SenderID и receiverid. Сендерид и получатель присутствуют в таблице пользователей. Я хочу получить имена как senderid, так и receiverid, присоединив таблицу пользователя к вышеуказанному запросу. Может кто-нибудь, пожалуйста, помогите мне с этим?

+0

Образец ваших данных поможет – kellymandem

ответ

5

Вы можете join таблицу пользователя дважды, один раз с идентификатором отправителя и идентификатором получателя и получить имя.

SELECT t.*,usend.user_name sender_name, urec.user_name receiver_name 
FROM thread t 
JOIN users usend on usend.user_id = t.sender 
JOIN users urec on urec.user_id = t.receiver 
where sender = 135 or receiver = 135 
order by updatedttm desc 
0

Я бы с LEFT JOIN, как он будет отображать ваш поток, даже если отправитель или получатель получает удален.

SELECT *, 
    sender.username AS sender_name, 
    receiver.username AS receiver_name 
FROM thread AS t 
LEFT JOIN users AS sender ON t.sender = sender.user_id 
LEFT JOIN users AS receiver ON t.sender = receiver.user_id 
WHERE sender = 135 OR receiver = 135 
ORDER BY 
updatedttm DESC 
Смежные вопросы