2016-08-01 16 views
-1

Ich habe zwei Tabellen, die Lehrer ist ein anderes Thema und ich muss die Themen zu den Lehrern verknüpfen, das ist eine einfache, aber das Problem ist ein einzelner Lehrer kann mehrere Fächer haben. Deshalb brauche ich eine Art Array dafür, so dass, wenn ich meine Abfragen mit Python mache, es ein Array zurückgibt oder sollte ich ein "Tupel von Tupeln von Tupeln" sagen. Kann mir also jemand helfen, das zu lösen?MySQL bekommen mehrere Elemente aus einer Tabelle als Eingabe für ein einzelnes Feld einer anderen Tabelle

Danke

Antwort

1

Datenbank Architektur ist am wichtigsten zu entscheiden. Hier scheint 2 Ansatz eins von Ihnen oder anderen entschieden, um eine Mapping-Tabelle zu erstellen.

Für Ihren Ansatz: -

id teacher_name Subject 
1 XYZ   1,5,6,7 

Abfrage: -

SELECT teacher_name, subject_name 
    FROM subject s 
    INNER JOIN teacher t on FIND_IN_SET(s.id,t.subject) 

Andere ist eine Zuordnungstabelle machen: -

teacher_id subject_id 
1   1 
1   5 
1   7 

Abfrage: -

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

Aber dieser Eintrag unter Subject Spalte, wird das ein Int oder ich muss es in ein int konvertieren? –

+0

Im ersten Optionseintrag unter Betreff ist eine durch Kommas getrennte Zeichenfolge. Sie müssen sich sorgen. FIND_IN_SET behandelt automatisch handle es. Es funktioniert wie FIND_IN_SET (5, '1,2,5,6,7') es gibt 1 zurück und FIND_IN_SET (9, '1,2,5,6,7') gibt false zurück. So werden Ergebnisse zurückgegeben, die zurückgegeben werden. Abfrage zurück wie [(TeacherXYZ, Math), (TeacherXYZ, Physik), (TeacherXYZ, Computer), (TeacherABC, Math), (TeacherABC, Physik)] –

+0

Danke, das war was ich wissen musste und bis zu diesem Punkt machte ich die Trennung und Vergleich von Subject ID und Teacher ID in Python. –

Verwandte Themen