2012-08-04 70 views
2

我正在製作以下格式的用戶狀態列表「A like B's XXX」。 A和B都是註冊用戶,具有姓和名和用戶標識。如何兩次將狀態表與用戶表連接以獲取這兩個用戶的名稱?謝謝。SQL連接多次?

SELECT "SQACTION"."TIMECREATED", 
     "SQWORDLIST".*, 
     "SUBJECT"."FIRSTNAME" subject_fn, 
     "SUBJECT"."LASTNAME" subject_ln, 
     author.firstname author_fn, 
     author.lastname author_ln 
FROM "SQACTION" 
    INNER JOIN "SQWORDLIST" 
    ON SQACTION.ACTION = SQWORDLIST.GUID 
    INNER JOIN "SQUSER" SUBJECT 
    ON SQACTION.SUBJECT = SUBJECT.GUID 
    LEFT JOIN SQDOCUMENT 
    ON SQACTION.ENTITY = SQDOCUMENT.GUID 
    LEFT JOIN SQUSER AUTHOR 
    ON SQDOCUMENT.AUTHORID = AUTHOR.GUID 
WHERE (SUBJECT.GUID = 'B4D3BF632C0C4DB3AB01C8B284069D8F') 
    OR (SUBJECT.GUID IN ('67882AF3FA3C4254AF9A12CA0B0AB6E4', 
         '6A4B52FE233444838AACFE2AFFE4D38F', 
         '8CA3FB9061FF4710B51F1E398D3D1917')) 
ORDER BY "TIMECREATED" DESC 

這就是我試過的。謝謝。

回答

0

你的意思是這樣,狀態有兩個字段鏈接到用戶表?

select user_a.first_name as user_a_first_name, user_b.first_name as user_b_first_name, status.status_name 
from status 
left join users as user_a on user_a.id = status.user_from_id 
left join users as user_b on user_b.id = status.user_to_id 
+0

嗨,我想做一個主題動詞對象格式狀態。該主題是一個用戶,該對象可以是用戶本身或用戶的東西。 – Yangrui 2012-08-04 05:26:21

+0

我將用戶名和用戶的東西存儲在兩張獨立的表上。該ID是全球性的。 – Yangrui 2012-08-04 05:27:23

+0

狀態與用戶a和用戶之間的關係是什麼? – 2012-08-04 07:00:48

2

您需要在FROM子句中包含兩次表名,並使用別名,以便您可以指定ON語句中使用表的每個實例的哪些字段。你沒有在你的問題中提供足夠的細節來給出一個確切的例子,所以這裏更一般。

用戶表,有ID &名稱

RegTable,用用戶名和SponsorID

select ut1.name as [User], 
     ut2.name as [Sponsor] 
from UserTable ut1 
     inner join RegTable rt on ut1.id = rt.userid 
     inner join UserTable ut2 on rt.sponsorid = ut2.id 
+0

嗨,謝謝你的迴應。我有三張桌子。一個是狀態,一個是用戶,另一個是用戶創建的文檔(博客,照片等)狀態表僅存儲用戶的ID,我試圖加入用戶表以獲取用戶的名字和姓氏。 – Yangrui 2012-08-04 04:24:10