2016-08-25 42 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或聚合函数的参数中。