Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Abfrage vereinfachen?

0 views
Skip to first unread message

Heiko Warnken

unread,
Dec 21, 2009, 3:05:07 PM12/21/09
to
Hallo Leute,
ich habe in einer Datenbank 2 Tabellen:
Tabelle 1:
Name: mail
ID, Int, 5, autoincrement
von, int 5
an, int 5
subject, vchar 128
text, vchar 32000

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.

Sebastian Suchanek

unread,
Dec 21, 2009, 3:50:56 PM12/21/09
to
Heiko Warnken schrieb:

> [...]


> 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

Thorsten Kleibaum

unread,
Dec 21, 2009, 6:11:45 PM12/21/09
to
Hallo Heiko,

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

0 new messages