Как я могу получить информацию о нескольких пользователях из одного запроса? - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть таблица счетов, которая содержит идентификатор пользователя, который отправил счет (from_id), и пользователя, который получил счет (to_id).

Я хочу получить обе их информации из таблицы профиля, но не могу понять, как.

Ниже приведен запрос, который я собираю, чтобы получить информацию только для одного пользователя (from_id) из-за объединения.

SELECT jobs.title, profiles.display_name, invoice.to_id, invoice.from_id, invoice.amount
FROM (invoice) 
JOIN jobs ON jobs.job_id = invoice.job_id 
JOIN profiles ON invoice.from_id = profiles.user_id 
WHERE `invoice_id` = '3'

Ответы [ 2 ]

3 голосов
/ 02 сентября 2011

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

SELECT 
  j.title, 
  tp.display_name as to_name, fp.display_name as from_name, 
  i.to_id, i.from_id, 
  i.amount
FROM 
  invoice i
  JOIN jobs j ON j.job_id = i.job_id 
  JOIN profiles fp ON i.from_id = fp.user_id 
  JOIN profiles tp ON i.to_id = tp.user_id 
WHERE 
  i.invoice_id= '3'
2 голосов
/ 02 сентября 2011

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

SELECT jobs.title
    , Profile_From.display_name AS [From]
    , Profile_To.display_name AS [To]
    , invoice.to_id
    , invoice.from_id
    , invoice.amount
FROM invoice 
JOIN jobs 
    ON jobs.job_id = invoice.job_id 
JOIN profiles Profile_From
    ON invoice.from_id = Profile_From.user_id 
-- You are just missing this part
JOIN profiles Profile_To
    ON invoice.to_id = Profile_To.user_id 
WHERE invoice_id= '3'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...