Tabelle 2:
Name: Benutzer
ID, int 5, autoincrement
nachname, vchar 60
vorname, vchar 60
Im Feld "von" und "an" der Tabelle "Mail" stehen die
jeweiligen Benutzer-IDs, welche in der Tabelle "Benutzer" zu
finden sind. Wie ermittle ich nun aus der Tabelle "Benutzer"
den Vor- und Nachnamen anhand der Spalte "von" bzw. "an" aus
der Tabelle "mail"?
Bis jetzt mache ich das in Form von zwei getrennten
SQL-Abfragen:
SELECT * FROM mail
und
SELECT * FROM benutzer WHERE ID=mail.von (bzw. mail.an)
Diese zwei Abfragen müssen sich doch theoretisch auch in
einer Abfrage vereinen lassen, oder?
Aber wie?
Danke und frohe Weihnachten,
Heiko
--
Die Signatur fällt heute mal aus.
> [...]
> Bis jetzt mache ich das in Form von zwei getrennten
> SQL-Abfragen:
>
> SELECT * FROM mail
> und
> SELECT * FROM benutzer WHERE ID=mail.von (bzw. mail.an)
>
> Diese zwei Abfragen müssen sich doch theoretisch auch in
> einer Abfrage vereinen lassen, oder?
> [...]
Daß "SELECT * FROM..." Boese[tm] ist, weißt Du hoffentlich?
Die ungetestete Antwort auf Deine eigentliche Frage:
SELECT b1.vorname AS von_vorname, b1.nachname AS von_nachname,
b2.vorname AS an_vorname, b2.nachname AS an_nachname, [...]
FROM mail m
LEFT JOIN benutzer b1 ON b1.ID = m.von
LEFT JOIN benutzer b2 ON b2.ID = m.an
HTH,
Sebastian
Am 21.12.2009 21:05, schrieb Heiko Warnken:
> ich habe in einer Datenbank 2 Tabellen:
> Tabelle 1:
> Name: mail
>
> Tabelle 2:
> Name: Benutzer
> Wie ermittle ich nun aus der Tabelle "Benutzer"
> den Vor- und Nachnamen anhand der Spalte "von" bzw. "an" aus
> der Tabelle "mail"?
>
> Diese zwei Abfragen müssen sich doch theoretisch auch in
> einer Abfrage vereinen lassen, oder?
> Aber wie?
Wenn ich Dich richtig verstehe, dann sollte Dich folgendes zum Ziel bringen:
SELECT
mail.*,
b1.nachname AS von,
b2.nachname AS an
FROM mail
LEFT JOIN benutzer b1 ON mail.von = b1.id
LEFT JOIN benutzer b2 ON mail.an = b2.id
Wichtig ist in dem Fall, daß Du mit Aliassen (b1, b2) arbeitest, damit
die Verknüpfungen zwischen den Tabellen eindeutig sind.
Gruß
Thorsten