SQL-Befehl < Sonstige < Schule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 22:39 Di 08.12.2009 | Autor: | silfide |
Hallo Leute, in der Schule habe wir gerade eine Projektarbeit zu Datenbanken. ERM erstellen, Datenbank anlegen und SQL-Abfragen erstellen.
Und ich komme schlichtweg nicht weiter:
Wir haben uns das Thema Post gewählt, und nun habe ich folgende Modell (Auszug):
Absender (ANr, AName, AVorname, AStraße, APLZ, AOrt)
Empfänger (ENr, EName, EVorname, EStraße, EPLZ, EOrt)
Paket (PNr, Gewicht, Preis, Kategorie, EDatum, EUhrzeit, ANr, ENr, TNr)
Ich möchte, dass AName, AVorname, EName und EVorname angezeigt werden (quasi Wer hat wem etwas geschickt?).
Die Tabellen sind über die Tabelle Paket miteinander verknüpft. In dieser sind die Nr miteinander verbunden. (siehe Bild)
[Dateianhang nicht öffentlich]
Nur wie packe ich das in einen Befehl rein - jegliche Versuche sind bisher gescheitert. (Ich kann mir zwar die Felder anzeigen lassen, aber nicht die gewünschte Zuordnung.
Kennst sich hier jemand aus??
Mia
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:46 Do 10.12.2009 | Autor: | Marc |
Hallo Mia,
> Ich möchte, dass AName, AVorname, EName und EVorname
> angezeigt werden (quasi Wer hat wem etwas geschickt?).
> Die Tabellen sind über die Tabelle Paket miteinander
> verknüpft. In dieser sind die Nr miteinander verbunden.
> [...]
> Nur wie packe ich das in einen Befehl rein - jegliche
> Versuche sind bisher gescheitert. (Ich kann mir zwar die
> Felder anzeigen lassen, aber nicht die gewünschte
> Zuordnung.
Es müsste so funktionieren:
Tabellen werden durch JOIN verbunden, probiere mal:
SELECT AName, AVorname, EName, EVorname FROM Absender INNER JOIN Paket ON (Absender.ANr=Paket.ANr) INNER JOIN Empfänger ON (Paket.ENr=Empfänger.ENr)
Von diesem Befehl gibt es einige gleichbedeutende Varianten, z.B.
(sogenannter "implicit join":
SELECT AName, AVorname, EName, EVorname FROM Absender, Paket, Empfänger WHERE Absender.ANr=Paket.ANr AND Paket.ENr=Empfänger.ENr
oder sogar bei den sauber gewählten Attributen in deinem Beispiel auch
SELECT AName, AVorname, EName, EVorname FROM Absender NATURAL JOIN Paket NATURAL JOIN Empfänger
Ob die obigen Befehle funktionieren, hängt von deiner konkreten Datenbanksoftware ab. Falls sie nicht funktionieren, teile doch mal die Fehlermeldung mit. Interessant finde ich an deinem Beispiel, dass eine Tabelle einen Umlaut enthält, das hätte ich mich nicht getraut...
Viele Grüße,
Marc
|
|
|
|