2016-08-25 48 views
0

我想弄清楚如何在用戶GROUP_CONCAT的mysql查詢中顯示用戶名而不是用戶名。以下查詢適用,但顯示用戶標識。我如何顯示用戶名呢?如何使用GROUP_CONCAT顯示用戶名?

查詢

SELECT p.user_name, p.user_id, up.file, GROUP_CONCAT(c.userid) 
FROM tbl_uploads up 
LEFT JOIN tbl_users p ON up.user_id = p.user_id 
LEFT JOIN tbl_collab c ON up.file = c.file 
GROUP BY up.file 

結果

user_name | user_id | file  | GROUP_CONCAT(c.userid) 

Peter   5   pic_1.jpg    2,5 
Mary   6   pic_2.jpg    6 
julian  2   pic_3.jpg    (null) 
+0

'GROUP_CONCAT(c.usernames)'? – Jens

+0

SELECT p.user_name,p.user_id,up.file,GROUP_CONCAT(c.userid),GROUP_CONCAT(c.user_name)作爲用戶名 FROM tbl_uploads向上 LEFT JOIN tbl_users P於up.user_id = p.user_id LEFT JOIN tbl_collab c ON up.file = c.file GROUP BY up.file – premi

回答

1

加入users表一次,並從那裏獲得的用戶名:

SELECT p.user_name, p.user_id, up.file, GROUP_CONCAT(cp.user_name) 
FROM tbl_uploads up 
LEFT JOIN tbl_users p ON up.user_id = p.user_id 
LEFT JOIN tbl_collab c ON up.file = c.file 
LEFT JOIN tbl_users cp ON cp.user_id = c.userid 
GROUP BY up.file 
1

據推測,tbl_users具有用戶名。如果是這樣,它用在GROUP_CONCAT()

SELECT up.file, GROUP_CONCAT(p.username) 
FROM tbl_uploads up LEFT JOIN 
    tbl_users p 
    ON up.user_id = p.user_id LEFT JOIN 
    tbl_collab c 
    ON up.file = c.file 
GROUP BY up.file; 

注意我從SELECT刪除p.username。通常,在聚合查詢中,所有的列/表達式都應該在GROUP BY或聚合函數的參數中。