SQL - Zwei Fremdschlüssel aus einer Tabelle auf eine Tabelle referenzieren?
Ich habe folgendes Problem:
ich habe zwei tabellen:
-Angebot (A_ID, Titel, Verantwortlicher, Begleitperson)
-Lehrer(L_Id, Name)
Nun will ich, dass in Angebot, in den Spalten 'Verantwortlicher' und 'Begleitperson', die entsprechenden Lehrer-IDs stehen und möchte die halt als FOREIGN KEYS referenzieren, aber irgendwie funktioniert das nicht, wenn ich es bei phpMyadmin (XAMPP) versuche.
Muss ich jetzt eine eigene Klasse für Begeleitpersonen oder eine "Zwischentabelle" zwischen Lehrer und Angebot erstellen, oder funktioniert das auch so, wie ich es mir vorgestellt hatte?
Bitte kein Spam
4 Antworten
Bei mir funktioniert das einwandfrei. Ich benutze aber auch bei Verknüpfungen keinen JOIN, sondern mache das mit WHERE. Das ist transparent und überschaubar. Ich schreibe hin, wie ich die Verknüpfung haben will und die Datenbank macht das dann auch so. Komplexe Verknüpfungen wie ich sie oft habe, würde ich mit dem JOIN gar nicht hinbekommen.
Ich vermute mal, dass Dein Problem nicht mit der Definition, sondern mit der Anwendung zu tun hat. Wenn Du das nämlich mit WHERE machst, wirst auch merken, dass es beim Verknüpfen mehrere Möglichkeiten gibt und Du entscheiden musst, wie Du die Verknüpfung haben willst. Der JOIN, der das automatisch macht, ist da überfordert.
Für Schulbeispiele im Informatikunterricht ist der JOIN ok.
Wie wurde dieses Problem nun gelöst?
Ich habe das selbe Thema gerade für mein Abschlussprojekt.
Ich habe die Tabellen Verein und Paarung, in Paarung hab ich Heimteam und Gastteam als Eigenschaft und in beidem kommt ein Verein.
Kann man jetzt zwei FS Keys von einer Tabelle in eine andere schreiben? Das mit WHERE wüsste ich jetzt gar nicht wie ich das umsetzen sollte ^^
Möchte mir die zwei Zwischentabellen auf FS Key Paarung und Verein sparen.
Eine Antwort auf die Frage steht hier leider nirgends. Ich habe das gleiche Problem und noch keine Lösung. Zur Verdeutlichung:
Eine funktionierende Abfrage, die den Namen des verantwortlichen Lehrers ergibt, sieht so aus:
SELECT Titel, Name FROM Angebot, Lehrer ON Angebot.Verantwortlicher=Lehrer.L_Id;
WHERE statt ON könnte man auch verwenden. Und diese Abfrage liefert die Begleitperson:
SELECT Titel, Name FROM Angebot, Lehrer ON Angebot.Begleitperson=Lehrer.L_Id;
Wie sähe eine korrekte Abfrage aus, die beides liefert, also schematisch dies:
SELECT Titel, Verantwortlicher.Name, Begleitperson.Name FROM Angebot, Lehrer
Ist mir klar, dass das nicht funktioniert. Aber wie sähe die Lösung aus?
Zeig doch mal bitte dein SQL Statement