2016-08-01 71 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。 –

相關問題