我必须创建一份关于一些学生完成情况的报告。每个学生都属于一个客户。这是表格(针对这个问题进行了简化)。
CREATE TABLE `clients` (
`clientId` int(10) unsigned NOT NULL auto_increment,
`clientName` varchar(100) NOT NULL default '',
`courseNames` varchar(255) NOT NULL default ''
)
The courseNames
字段包含以逗号分隔的课程名称字符串,例如“AB01,AB02,AB03”
CREATE TABLE `clientenrols` (
`clientEnrolId` int(10) unsigned NOT NULL auto_increment,
`studentId` int(10) unsigned NOT NULL default '0',
`courseId` tinyint(3) unsigned NOT NULL default '0'
)
The courseId
这里的字段是client.courseNames 字段中课程名称的索引。所以,如果客户的courseNames
是“AB01,AB02,AB03”,并且courseId
的招生人数是2
,那么该学生位于 AB03。
有没有办法可以对这些包含课程名称的表进行单一选择?请记住,会有来自不同客户的学生(因此有不同的课程名称,并非所有课程名称都是连续的,例如:“NW01,NW03”)
基本上,如果我可以拆分该字段并从结果数组中返回单个元素,那么这就是我正在寻找的。这就是我在神奇的伪代码中的意思:
SELECT e.`studentId`, SPLIT(",", c.`courseNames`)[e.`courseId`]
FROM ...