gpt4 book ai didi

mysql - 一列中的多个值 MYSQL

转载 作者:太空宇宙 更新时间:2023-11-03 11:35:27 25 4
gpt4 key购买 nike

所以我现在有三个数据库。这是生成每个表的 SQL 代码。

CREATE TABLE `Course` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(25) NOT NULL,
`startTime` time NOT NULL,
PRIMARY KEY (`id`)
);

CREATE TABLE `School` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`schoolname` varchar(25) NOT NULL,
PRIMARY KEY (`id`)
);

CREATE TABLE `SchoolCourse` (
`schoolid` int(11) NOT NULL,
`courseid` int(11) NOT NULL,
PRIMARY KEY (`schoolid`,`courseid`),
KEY `FK_course` (`courseid`),
CONSTRAINT `FK_course` FOREIGN KEY (`courseid`) REFERENCES `Course` (`id`),
CONSTRAINT `FK_Student` FOREIGN KEY (`schoolid`) REFERENCES `School` (`id`)
);

我对这些表格的目标是让它看起来像这样

---------------------------------------------------
|School Name | Courses |
---------------------------------------------------
| School1 | Course1, Course2, Course3 |
| School2 | Course1, Course3 |
| School3 | Course3 |
| School4 | Couse1, Course2, Course3, Course4 |
---------------------------------------------------

我似乎不知道该怎么做。我试过像这样输入值。

INSERT INTO 'ShcoolCourse' VALUES (
(1, 1), (1, 2), (1, 3),
(2, 1), (2, 3),
(3, 3),
(4, 1), (4, 2), (4, 3), (4, 4));

然后从那里我会执行连接并尝试将值放入一列但到目前为止没有运气,我环顾了其他问题,其中一些人有相同的想法,但不完全是我正在做。任何帮助将不胜感激。

最佳答案

您当前的架构已规范化并且非常好。如果您想要这样的逗号分隔输出,那么只需在您使用 GROUP_CONCAT 查询时生成它:

SELECT
t1.id,
t1.schoolname AS `School Name`,
GROUP_CONCAT(t3.name) AS Courses
FROM School t1
LEFT JOIN SchoolCourse t2
ON t1.id = t2.schoolid
LEFT JOIN Course t3
ON t2.courseid = t3.id
GROUP BY
t1.id,
t1.schoolname

请注意,我在聚合中包含了 idschoolname,因为两个不同的学校可能巧合地具有相同的名称,我们需要一些方法来区分它们。

关于mysql - 一列中的多个值 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46397069/

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