2012-03-30 176 views
0

我有3個表(用戶關係和USER_TYPE)這些數據(相關的):選擇用戶詳細信息

USER TABLE: 
id, username, avatar, user_type_id 

RELATIONSHIP TABLE: 
id, user_id1, user_id2, relationship_points 

USER_TYPE 
id 

我試圖創建關係每一個條目, ,具有ID「1」的用戶可以在user_id1或user_id2中存在關係,所以,我不必重複不必要的數據。

我已經創建了(感謝另一個StackOverflow answer)查詢來選擇來自用戶的所有關係詳細信息,但只有它的id位於「user_id1」中。

SELECT 
     r.id AS relationship_id, 
     r.relationship_points AS points, 
     u.username AS username, 
     u.avatar_url AS avatar 
    FROM 
     relationship AS r 
    INNER JOIN 
     user AS u 
    ON 
     r.user_id2 = u.id 
    INNER JOIN 
     user_type AS t 
    ON 
     u.user_type_id = t.id 
    WHERE 
     r.user_id1 = ? 

但是,正如你所看到的,如果用戶在「user_id2」中,它不起作用。

我知道我可以做另一個查詢,但我認爲這是「簡單,懶惰」的方式,我很想學習如何在單個查詢中做到這一點。

回答

0

讓我知道如果這使得招:

SELECT 
    r.id AS relationship_id, 
    r.relationship_points AS points, 
    u.username AS username, 
    u.avatar_url AS avatar 
FROM relationship AS r 
INNER JOIN user u 
ON r.user_id2 = u.id OR r.user_id1 = u.id 
INNER JOIN user_type AS t 
ON u.user_type_id = t.id 
WHERE u.id = ? 
+0

差不多......(我剛看到這個答案現在...對不起)。 – 2012-05-20 15:36:46

+0

查詢結果失敗,用戶數據...所有數據來自「主要」用戶而不是他的朋友...... – 2012-05-20 15:39:52