mysql присоединяется к результатам фильтрации 2 таблиц

#mysql #sql #select #inner-join

#mysql #sql #выберите #внутреннее объединение

Вопрос:

У меня есть 2 таблицы пользователей и реферала.

вот структура из 2 таблиц.

реферальная таблица

 |    Column    |
----------------
| ref_id       |
| from_user_id |
| to_user_id   | 
| ref_name     |    
| ref_phone    |    
| ref_email    |        
| ref_note     |
 

таблица пользователей

 |    Column    |
----------------
| user_id         |
| user_name       |
| user_first_name |
| user_last_name  |
| user_email      |
| user_phone      |
 

у меня есть 2 раздела, в которых пользователь может видеть полученные и отправленные ссылки.

в разделе received referral как мне получить first_name и last_name из таблицы users, присоединяющейся к from_user_id в таблице referral.

до сих пор я придумал этот запрос для полученной ссылки, который дает мне предполагаемый набор результатов. но как получить имя и фамилию таблицы пользователей из реферальной таблицы from_user_id

 SELECT users.user_id, users.user_name, users.user_firstname, users.user_lastname, referral.ref_name, referral.ref_phone, referral.ref_email, referral.ref_note
FROM referral JOIN users 
ON referral.to_user_id = users.user_id 
WHERE referral.to_user_id = (logged in user id)
 

аналогично в разделе «отправленные ссылки», как мне получить имя пользователя и фамилию, объединяющую пользователей и таблицу ссылок из_user_id ключа

 SELECT users.user_id, users.user_name, users.user_firstname, users.user_lastname
            FROM referral JOIN users 
            ON referral.from_user_id = users.user_id
            WHERE referral.from_user_id = (logged in user id)
 

любая помощь будет принята с благодарностью.

Ответ №1:

Я думаю, вам нужны два объединения в таблице users:

 select r.ref_name, r.ref_phone, r.ref_email, r.ref_note,
    uf.user_id as from_user_id, uf.user_name as from_user_name, uf.user_firstname as from_user_firstname, uf.user_lastname as from_user_lastname, 
    ut.user_id as to_user_id,   ut.user_name as to_user_name,   ut.user_firstname as to_user_firstname,   ut.user_lastname as to_user_lastname
from referral r
inner join users ut on r.to_user_id   = ut.user_id 
inner join users uf on r.from_user_id = uf.user_id
where r.to_user_id = ?
 

Комментарии:

1. спасибо @GMB, что запрос работает отлично.