gpt4 book ai didi

mysql - 在mysql中加入数据透视表

转载 作者:行者123 更新时间:2023-11-29 10:20:26 26 4
gpt4 key购买 nike

如何使用数据透视表连接不同的表

我有 4 个表,例如

 users

id | name |
-------------
1 | abc |
2 | ccc |

user_profile

id | user_id | email |
-------------------------------
1 | 1 | abc@gmail.com
2 | 2 | ccc@gmail.com

skills

id | skill_name |
--------------------------
1 | java |
2 | php |

user_skills

user_id | skill_id |
---------------------------
1 | 1 |
1 | 2 |
2 | 1 |

结果应该是

 name  |  email       |  skills   |
----------------------------------
abc |abc@gmail.com | java, php |
ccc |ccc@gmail.com | java |

我可以连接多个表,但连接数据透视表时遇到问题

我在下面尝试过查询

 SELECT users.name,user_profiles.email, group_concat(programs.name) 
from users
JOIN user_profiles on user_profiles.user_id = users.id
LEFT JOIN user_skills on user_skills.user_id = users.id
LEFT JOIN skills on user_skills.skill_id = skills.id
GROUP BY users.id

有人可以帮我解决这个问题吗?谢谢

最佳答案

您需要 GROUP_CONCAT 生成 CSV 技能列表:

SELECT
u.name,
up.email,
GROUP_CONCAT(s.skill_name) AS skills
FROM users u
INNER JOIN user_profile up
ON u.id = up.user_id
LEFT JOIN user_skills us
ON u.id = us.user_id
INNER JOIN skills s
ON us.skill_id = s.id
GROUP BY
u.id, u.name, up.email;

Demo

请注意,我按用户的 ID 和名称进行分组,因为可能两个用户碰巧具有相同的名称。请点击下面的链接来获取正在运行的 SQLFiddle。

关于mysql - 在mysql中加入数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49361443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com