1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

mySQL-Abfrage, Verknüpfung zweier Anfragen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Muffelon, 4 Oktober 2014.

  1. Muffelon

    Muffelon Neuer Benutzer

    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!
     
  2. Hony%

    Hony% Datenbank-Guru

    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
     
  3. Muffelon

    Muffelon Neuer Benutzer

    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
     
  4. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  5. Muffelon

    Muffelon Neuer Benutzer

    Danke! So funktioniert es :)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden