2016-08-01 54 views

回答

1

数据库架构是最重要的决定。这似乎有两种方法,一种是由你或其他人决定制作一个映射表。

对于你的方法: -

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 
+1

但是,在主题栏下的条目,将是一个int或我必须将其转换为int? –

+0

在主题下的第一个选项条目是逗号分隔的字符串。你确实需要担心。 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)] –

+0

感谢这就是我需要知道的并且直到这一点,在python中分离和比较主题ID和Teaher ID。 –

相关问题