-1
我有两个表格,一个是教师另一个是科目,我需要将这些科目链接到教师,这是一个容易的问题,但问题是一个老师可以有多个科目。因此,我需要一种数组,因此,当我用python进行查询时,它会返回一个数组或者应该说'元组元组的元组'。那么有人可以帮我解决这个问题吗?MySQL从一个表中获得多个项目作为另一个表的单个字段的输入
谢谢
我有两个表格,一个是教师另一个是科目,我需要将这些科目链接到教师,这是一个容易的问题,但问题是一个老师可以有多个科目。因此,我需要一种数组,因此,当我用python进行查询时,它会返回一个数组或者应该说'元组元组的元组'。那么有人可以帮我解决这个问题吗?MySQL从一个表中获得多个项目作为另一个表的单个字段的输入
谢谢
数据库架构是最重要的决定。这似乎有两种方法,一种是由你或其他人决定制作一个映射表。
对于你的方法: -
id teacher_name Subject
1 XYZ 1,5,6,7
查询: -
SELECT teacher_name, subject_name
FROM subject s
INNER JOIN teacher t on FIND_IN_SET(s.id,t.subject)
其他是做一个映射表: -
teacher_id subject_id
1 1
1 5
1 7
查询: -
SELECT teacher_name, subject_name
FROM mapping m
INNER JOIN subject s on m.subject_id = s.id
INNER JOIN teacher t on m.teacher_id = t.id
但是,在主题栏下的条目,将是一个int或我必须将其转换为int? –
在主题下的第一个选项条目是逗号分隔的字符串。你确实需要担心。 FIND_IN_SET自动处理它。它的工作方式与FIND_IN_SET(5,'1,2,5,6,7')相同,它返回1,FIND_IN_SET(9,'1,2,5,6,7')返回false。所以条件结果将被返回。查询返回像[(TeacherXYZ,Math),(TeacherXYZ,Physics),(TeacherXYZ,computer),(TeacherABC,Math),(TeacherABC,Math),(TeacherABC,Physics)] –
感谢这就是我需要知道的并且直到这一点,在python中分离和比较主题ID和Teaher ID。 –