2011-09-01 85 views
0

我有一張發票表,其中包含發送發票的用戶(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' 

回答

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' 
+0

當我運行這個查詢時,我只得到display_name的結果。 – bigmike7801

+0

我添加了tp.display_name AS to_name,fp.display_name AS from_name,這看起來有訣竅;) – bigmike7801

+0

你是對的。我編輯了代碼。 – GolezTrol

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'