mySQL-Abfrage, Verknüpfung zweier Anfragen

Muffelon

Neuer Benutzer
Beiträge
3
Hallo, ich möchte eine Brief-Datenbank entwickeln und habe hierzu zwei Tabellen angelegt:
post und personen.
Die Tabelle "post" enthält u.a. folgende Spalten: post_id (Primärschlüssel), adressat_p_id (Fremdschlüssel) und absender_p_id (Fremdschlüssel), datum, ...
Die Tabelle "personen": p_id (Primärschlüssel), name, vorname
Die Idee dahinter war, dass Personen sowohl als Absender als auch als Adressaten auftreten können und eine Aufteilung der Tabelle "personen" in "absender" und "adressaten" zu entsprechend vielen Redundanzen geführt hätte.

Nun habe ich allerdings ein Problem mit den Abfragen:
Kann mir jemand sagen, ob, und wenn ja wie, es in einer Abfrage möglich ist, sowohl den Absender (Vorname + Nachname) als auch den Empfänger ("") eines Briefes auszugeben?

Mit UNION hat es leider nicht funktioniert... (Bin allerdings SQL-Neuling...)

Ich hoffe, jemand kann mir weiterhelfen?! Danke schon einmal!
 
Werbung:
Hi Muffelon.

Was du suchst ist ein JOIN:
Code:
SELECT *
FROM post AS P
INNER JOIN personen AS A
ON P.absender_p_id = A.p_id
INNER JOIN personen AS E
ON P.adressat_p_id = E.p_id

Mit UNION kannst du zwei ähnliche Mengen vereinigen.

Gruß
Hony
 
Hallo Hony,

vielen Dank für deine Hilfe! Mit deiner Abfrage bekomme ich eine Menge, die alle Spalten umfasst. Aber ist es möglich, stattdessen nur 5 Spalten (Datum, Name_Absender, Vorname_Absender, Name_Adressat, Vorname_Adressat) auszugeben, und bereits bei den Spaltennamen zwischen Absender und Adressat zu unterscheiden? Dies wäre wichtig, damit ich später getrennt auf diese zugreifen kann.

Aber noch einmal vielen Dank, du hast mir auf jeden Fall schon weitergeholfen!

Grüße, Sonja
 
Hallo Hony,

vielen Dank für deine Hilfe! Mit deiner Abfrage bekomme ich eine Menge, die alle Spalten umfasst. Aber ist es möglich, stattdessen nur 5 Spalten (Datum, Name_Absender, Vorname_Absender, Name_Adressat, Vorname_Adressat) auszugeben, und bereits bei den Spaltennamen zwischen Absender und Adressat zu unterscheiden? Dies wäre wichtig, damit ich später getrennt auf diese zugreifen kann.

Aber noch einmal vielen Dank, du hast mir auf jeden Fall schon weitergeholfen!

Grüße, Sonja

Ja statt select * nimmst select spalte1, spalte2, ... etc, dabei kannst Du dann auch z.B. a.p_name as absender, e.p_name as empfaenger oder so verwenden.
 
Werbung:
Zurück
Oben