2012-04-10 26 views
6

Sorun: Amaçlanan şekilde çalıştığım bir GROUP_CONCAT sorgusu var, ancak ham ID alanını değil, katıştırılmış bir yanıtı yapmak istiyorum.mySQL GROUP_CONCAT ifadesine iç birleştirme ekleyin

Güncel sorgusu:

SELECT user.user_id, user.user, GROUP_CONCAT(user_roles.roleID separator ', ') roles 
FROM user 
JOIN user_roles ON user.user_ID = user_roles.user_ID 
GROUP BY users.user_ID, users.user 

sonuç verir:

+----------+---------+----------------------------+ 
| user_ID | user | roles     | 
+----------+---------+----------------------------+ 
|  1 | Smith | 1, 3     | 
+----------+---------+----------------------------+ 
|  2 | Jones | 1, 2, 3     | 
+----------+---------+----------------------------+ 

İstenilen sonuç:

+----------+---------+----------------------------+ 
| user_ID | user | roles     | 
+----------+---------+----------------------------+ 
|  1 | Smith | Admin, Other   | 
+----------+---------+----------------------------+ 
|  2 | Jones | Admin, Staff, Other  | 
+----------+---------+----------------------------+ 

Kullanıcı tablosu:

+----------+---------+ 
| user_ID | user | 
+----------+---------+ 
|  1 | Smith | 
+----------+---------+ 
|  2 | Jones | 
+----------+---------+ 

* users_roles tablosu: *

+----------+---------+ 
| user_ID | role_ID | 
+----------+---------+ 
|  1 | 1  | 
+----------+---------+ 
|  2 | 1  | 
+----------+---------+ 
|  2 | 2  | 
+----------+---------+ 
|  2 | 3  | 
+----------+---------+ 
|  1 | 3  | 
+----------+---------+ 

rolleri tablosu:

+----------+-----------+ 
| role_ID | role_name | 
+----------+-----------+ 
|  1 | Admin | 
+----------+-----------+ 
|  2 | Staff | 
+----------+-----------+ 
|  3 | Other | 
+----------+-----------+ 

cevap

15

aşağıdaki sorgu

SELECT user.user_id, user.user, GROUP_CONCAT(roles.role_name separator ', ') roles 
FROM user 
JOIN user_roles ON user.user_ID = user_roles.user_ID 
JOIN roles ON user_roles.role_ID= user_roles.role_ID 
GROUP BY users.user_ID, users.user 
+0

tha deneyin nks Vikram - bu çalışmalar – Laurence