簡體   English   中英

用名稱替換GROUP_CONCAT列中的ID

[英]replace IDs from GROUP_CONCAT column with names

我有三個表,已通過以下SQL查詢成功加入

SELECT `bonuses`.`id`, `bonuses`.`bonus_name`, `bonuses`.`size`, creatorName.`name`, GROUP_CONCAT(DISTINCT bonus_user.user_id ORDER BY bonus_user.user_id SEPARATOR ', ') as bonusUsers from `bonuses`
inner join `users` as creatorName on `bonuses`.`created_from` = creatorName.`id`
inner join `bonus_user` on `bonuses`.`id` = `bonus_user`.`bonus_id`
group by `bonuses`.`id`

我得到的結果如下。 下一步,我想用用戶表中的名稱替換“ bonusUsers”列中的id。 我該如何處理?

+----+--------------+------+--------------+--------------+
| id |  bonus_name  | size |     name     |  bonusUsers  |
+----+--------------+------+--------------+--------------+
| 3  | Bonus Test 3 |   5  |     Test1    |    1, 2, 3   |
| 4  | Bonus Test 4 |   3  |     Test1    |    1, 2, 3   |
+----+--------------+------+--------------+--------------+

使用者

+----+-------+
| id | name  |
+----+-------+
| 1  | Test1 |
| 2  | Test2 |
| 3  | Test3 |
+----+-------+

獎金

+----+--------------+------+--------------+
| id |  bonus_name  | size | created_from |
+----+--------------+------+--------------+
| 1  | Bonus Test 1 |   1  |       1      |
| 2  | Bonus Test 2 |   1  |       1      |
| 3  | Bonus Test 3 |   5  |       1      |
| 4  | Bonus Test 4 |   3  |       1      |
+----+--------------+------+--------------+

bonus_user

+----+----------+------------+
| id | bonus_id | bonus_user |
+----+----------+------------+
| 1  |     3    |      1     |
| 2  |     3    |      2     |
| 3  |     3    |      3     |
| 4  |     4    |      1     |
| 5  |     4    |      2     |
| 6  |     4    |      3     |
+----+----------+------------+

與用戶表再次連接

SELECT `b`.`id`, `b`.`bonus_name`, `b`.`size`, u.`name`, 
GROUP_CONCAT(DISTINCT bu1.`name` ORDER BY bu.user_id SEPARATOR ', ') as bonusUsers 
from `bonuses` b
inner join `users` as u on `b`.`created_from` = u.`id`
inner join `bonus_user` bu on `b`.`id` = `bu`.`bonus_id`
inner join `users` as bu1 on `bu`.`user_id` = bu1.`id`
group by `b`.`id`, `b`.`bonus_name`, `b`.`size`, u.`name`

演示版

您需要別名表users,並將其加入bonus_user表,以從別名表中獲取用戶名。

SELECT `bonuses`.`id`, `bonuses`.`bonus_name`, `bonuses`.`size`, creatorName.`name`,
GROUP_CONCAT(DISTINCT user_names.name ORDER BY bonus_user.user_id SEPARATOR ', ') as bonusUsers from `bonuses`
inner join `users` as creatorName on `bonuses`.`created_from` = creatorName.`id`
inner join `bonus_user` on `bonuses`.`id` = `bonus_user`.`bonus_id`
inner join `users AS user_names` on `bonus_user`.`bonus_user` = `user_names`.`id`
group by `bonuses`.`id`

這也可能會有所幫助https://www.w3schools.com/sql/sql_alias.asp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM