• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

M-N Beziehung Abfrage

yss

Mitglied
Guten Abend

Wir hatten gerade erst in der Schule, wie man M zu N Beziehungen löst. Dazu ist wohl eine Zwischentabelle nötig. Nun habe ich folgendes Szenario:
Es gibt eine Tabelle Veranstaltungen und eine Tabelle Klassen. Eine Veranstaltung kann mehrerer Klassen haben und eine Klasse kann mehrere Veranstaltungen haben. Mit Klassen meine ich in diesem Fall Schulklassen. Nun habe ich mit eine Zwischentabelle VaKa gemacht. Somit habe ich 3 Tabellen (Unterstrichen = Primärschlüssel, Kursiv = Fremdschlüssel):
  • Veranstaltungen (veranstaltungsID, name, vaKaID)
  • Klassen (klassenID, name, vaKaID)
  • VaKa (klassenID, veranstaltungsID, vaKaID)
Nun kommt der Inhalt rein:
veranstaltungsIDnamevaKaID
1VA der Klasse 11
2VA der Klasse 22
3VA beider Klassen
klassenIDnamevaKaID
1TGE1
2TGE2


klassenIDveranstaltungsIDvaKaID
111
222
133
234


Und jetzt habe ich ein Problem beim Ausfüllen der vaKaIDs in der Tabelle VaKa. Wie muss ich das lösen? Und wenn die Struktur dann mal stimmt, wie muss eine Abfrage aussehen, wenn ich z.B. die Veranstaltungen der Klasse 1 haben will? Ich hab schon ein paar Varianten ausprobiert, aber das bringt auch nix, wenn der Aufbau nicht stimmt :/
 
Werbung:
vaKaID = Veranstaltungskalender oder was? Ist das Feld vorgegeben oder von dir hinzugefügt?

In den letzten beiden Tabellen muss auf jeden Fall vaKaID komplett weg, das wäre redundant, denn:
Über die klassenID ist die vaKaID immer verfügbar.

Es reicht, wenn deine Hilfstabelle aus klassenID und veranstaltungsID besteht.
Um Doppeleinträge zu vermeiden kannst du einen zusammengesetzten Primärschlüssel aus diesen beiden Feldern setzten, dann sind alle Kombinationen möglich, eine Kombination darf aber dann nicht 2 mal vorkommen.

Abfrage z.B. so:
Code:
SELECT "VaKa"."klassenID", 
"Klassen"."Name", 
"VaKa"."veranstalungsID",
"Veranstaltungen"."name", 
"Veranstaltungen"."vaKalD" 
FROM "VaKa", "Klassen", "Veranstaltungen" 
WHERE "VaKa"."klassenID" = "Klassen"."klassenID" 
AND "VaKa"."veranstalungsID" = "Veranstaltungen"."veranstalungsID" 
AND "VaKa"."klassenID" = 1
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben