SQL-Abfrage: String als IN übergeben

nh2

New Member
Hallo Forum,
ich habe zwei MySQL-Tabellen, eine mit Schülern und eine mit Klassen.

TABLE schueler:
ID --> name
1 --- peter
2 --- marc
3 --- niklas

TABLE klassen:
name --> schuelerIDs
mathe --- 1,2

In schuelerIDs stehen dann mehrere IDs drin, passend zu den IDs aus der Tabelle Schüler, getrennt durch irgendwelche Trennzeichen (z.B. Kommas oder auch die Form: '1','24','35' )

Wie kann ich nun alle Schüler SELECTen, deren IDs im Kurs 'mathe' stehen?
Ich dachte an sowas:

SELECT * FROM schueler WHERE ID IN
(
SELECT schueler_IDs FROM klassen WHERE name = 'mathe'
)

Das geht aber nicht. Wie mache ich das?

Danke!
 
Last edited by a moderator:
Das hilft mir leider in diesem Fall nicht weiter. Ich muss das aus der klassen-Tabelle auslesen, weil meine DB sonst übermäßig wachsen würde.
Außerdem möchte ich auch wissen, ob/wie das geht.
 
Glaubst du die Normalformen wurden aus Spaß erfunden?
Die größe einer Datenbank ist wohl eher irrelevant, zumal ich vermute das es sich hierbei um eine Schulaufgabe mit Beispieldatensätzen handelt.
Somit ist das Datenvolumen sowieso minimal.

Wenn du dir das Leben nicht unnötig schwer machen willst, beachte die Normalformen, dann kannst du mit INNER JOINs die Daten ganz einfach auslesen.

Edit:
Siehe Anhang. Das wäre eine Lösung nach der 3. Normalform.

Glaub mir es macht kein Spaß mit einer Datenbank zu arbeiten die die 3. NF nicht erfüllt.
Konsequenzen daraus hast du ja bereits mitbekommen.

Ich hab nicht zu einem "ERM nach Vorschrift" gegriffen, da ich nicht weiß ob du damit überhaupt was Anfangen könntest.
Deswegen diese Darstellung mit Inhalten der Tabellen und deren Beziehungen zueinander.
 
Last edited by a moderator:
Genau so habe ich es jetzt gemacht, ich habe es verstanden und es funktioniert auch noch :D

Danke!
 
Back
Top