我必须创建一个学生完成报告。每个学生都属于一个客户。这里是表(简化为这个问题)。
CREATE TABLE `clients` (
`clientId` int(10) unsigned NOT NULL auto_increment,
`clientName` varchar(100) NOT NULL default '',
`courseNames` varchar(255) NOT NULL default ''
)
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'
)
courseId字段此处是clients.courseNames字段中课程名称的索引。因此,如果客户的课程名称是“AB01,AB02,AB03”,并且注册的courseId是2,则学生在AB03。
有没有办法,我可以做一个单一的选择这些表,包括课程名称?请记住,将有来自不同客户的学生(因此有不同的课程名称,不是所有的顺序,例如:“NW01,NW03”)
基本上,如果我可以拆分该字段并从结果数组返回单个元素,这将是我正在寻找。这里是我的意思在魔法伪代码:
SELECT e.`studentId`, SPLIT(",", c.`courseNames`)[e.`courseId`]
FROM ...