gpt4 book ai didi

mysql - 从三个表中选择数据,其中按行显示第一个表中的所有记录,并水平显示另一个表中的所有重复项

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

我有三个表 Employee、Department,以及一个打破 Employee 和 Department 之间多对多关系的表。如果我想让所有员工及其各自的部门,员工会出现重复,因此我想显示所有员工及其部门,但水平显示部门以删除重复项。

CREATE TABLE `tbl_emp` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
);

CREATE TABLE `tbl_dept` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
);

CREATE TABLE `tbl_emp_dept` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`dep_id` bigint(20) NOT NULL DEFAULT '0',
`emp_id` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
);

最佳答案

尝试使用GROUP_CONCAT:

SELECT
e.id,
e.title,
GROUP_CONCAT(d.name) AS departments
FROM tbl_emp e
LEFT JOIN tbl_emp_dept ed
ON e.id = ed.emp_id
LEFT JOIN tbl_dept d
ON ed.dep_id = d.id
GROUP BY
e.id;

关于mysql - 从三个表中选择数据,其中按行显示第一个表中的所有记录,并水平显示另一个表中的所有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50148835/

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