我有一张发票表,其中包含发送发票的用户(from_id
)和收到发票的用户(to_id
)的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'
答案 0 :(得分:3)
您可以使用同一个表两次。给他们不同的别名,我认为无论如何都会使查询更具可读性。
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'
答案 1 :(得分:2)
您可以多次加入桌子 - 在这种情况下,您需要加入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'