2016-08-25 10 views
0

私はユーザIDの代わりにユーザ名を表示する方法を、ユーザGROUP_CONCATのmysqlクエリに入れようとしています。次のクエリは機能しますが、ユーザーIDは表示されます。代わりにユーザー名を表示するにはどうすればよいですか?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)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

は、ユーザーテーブルをもう一度参加し、そこからユーザ名を取得:

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または集約関数の引数に含まれている必要があります。

関連する問題