MYSQL,这种请求可能吗?
我有一些人(表person)有0个或N个角色(表role和personne\u role)。 我想选择所有人,以及他们所扮演的角色,以获得这种结果:MYSQL,这种请求可能吗?,mysql,Mysql,我有一些人(表person)有0个或N个角色(表role和personne\u role)。 我想选择所有人,以及他们所扮演的角色,以获得这种结果: PHIL COLLINS | Drummer | Singer MIKE RUTHERFORD | Singer ION ANDERSON | Singer MIKE JAGGER | CARLOS SANTANA | Guitarist ...... 每行可以有0个或N个角色 为此,我提出了两个请求 第一个获得员工的人(表人) 第二个
PHIL COLLINS | Drummer | Singer
MIKE RUTHERFORD | Singer
ION ANDERSON | Singer
MIKE JAGGER |
CARLOS SANTANA | Guitarist
......
每行可以有0个或N个角色
为此,我提出了两个请求
- 第一个获得员工的人(表人)
- 第二个用于循环所有检索到的员工并检索他们的每个角色(表角色和人员角色)
SELECT person.name, role.roles
FROM person
LEFT JOIN (
SELECT person_id, GROUP_CONCAT(DISTINCT role SEPARATOR ' | ') roles
FROM person_role
GROUP BY person_id
) role ON (person.id = role.person_id)
编辑:字段名称只是一个猜测,因为您没有向我们显示完整的表模式;此外,如果角色实际上在一个单独的故事中,比如说由一个角色\u id
连接,则需要将其添加到子查询中。您可以将a与a一起使用,类似于:
SELECT person.name, role.roles
FROM person
LEFT JOIN (
SELECT person_id, GROUP_CONCAT(DISTINCT role SEPARATOR ' | ') roles
FROM person_role
GROUP BY person_id
) role ON (person.id = role.person_id)
编辑:字段名称只是一个猜测,因为您没有向我们显示完整的表模式;此外,如果角色实际上在一个单独的故事中,比如说由
角色id
连接,则需要将其添加到子查询中。连接和分组方式、分组方式是您要查看的关键字。连接和分组方式、分组方式是您要查看的关键字。我不知道此分组方式说明。它很好用。谢谢!我不知道这个团体的指导。它很好用。谢谢!