Announcement

Collapse
No announcement yet.

Abfrage über mehrere Tabellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Abfrage über mehrere Tabellen

    Hallo,

    ich habe die Tabelle a mit:
    a.id
    a.kundenummer
    a.wert

    ich habe dann noch 2 weitere Tabellen b,c:
    b.kundennummer
    b.email

    c.kundennummer
    c.email

    Nun soll pro a.wert jeweils folgendes ausgegeben werden:
    kundenummer, email, wert

    Beispiel
    a:
    1,DEB1,5

    b.DEB1,[email protected]
    b.DEB1,[email protected]

    c.DEB1,[email protected]
    c.DEB1,[email protected]
    c.DEB1,[email protected]
    c.DEB1,[email protected]

    Ergebnis:
    DEB1, [email protected], 5
    DEB1, [email protected], 5
    DEB1, [email protected], 5
    DEB1, [email protected], 5
    DEB1, [email protected], 5
    DEB1, [email protected], 5

    Code:
    select a.wert, b.mail from TabelleA as a
    INNER JOIN TabelleB as b
    ON  b.Kundennummer = a.Kundennummer
    Aber wie kann ich pro Eintrag in der Tabelle a, alle Email Adressen von Tabelle b und c ausgeben?

    Danke!

  • #2
    Du nimmst die Abfrage wie schon gezeigt und erstellst sie ebenso für a und c
    Also 2 Abfragen, die 2 Teilergebnisse liefern.
    Die beiden Abfragen führst Du durch ein <Union All> zusammen und sortierst meinetwegen nach Kundennummer.

    Das gilt für den Fall, dass alle Ergebnisse untereinander aufgelistet sein sollen.
    Können/dürfen die Spalten mit den Emailadressen aus b und c nebeneinander stehen, könnte man es mit einer Abfrage und zweifachem Join von a auf b und c machen.
    Gruß, defo

    Comment


    • #3
      @defo: Da muss man aber aufpassen, weil sonst nur Kunden angezeigt werden die in beiden Tabellen eine Email Adresse haben.

      Mit einem Outer Join ginge das so:

      [highlight=sql]
      SELECT a.kundennummer, a.wert, b.email, c.email
      FROM TabelleA a
      LEFT OUTER JOIN TabelleB b ON a.kundennummer = b.kundennummer
      LEFT OUTER JOIN TabelleC c ON a.kundennummer = c.kundennummer
      [/highlight]

      Dann stehen die email adressen allerdings in 2 verschiedenen Spalten. Allerdings könnte man diese noch per String Manipulation in eine Spalte bringen, mit Komma getrennt oder so. Auf verschiedene Zeilen lässt es sich nicht so einfach aufteilen.

      Comment


      • #4
        Originally posted by fanderlf View Post
        @defo: Da muss man aber aufpassen, weil sonst nur Kunden angezeigt werden die in beiden Tabellen eine Email Adresse haben.
        Dann stehen die email adressen allerdings in 2 verschiedenen Spalten.
        Richtig, diese Variante war aber glaub ich sowieso nicht gewollt, hab ich nur erwähnt, weil es unique24 laut Frage darum ging, eine (einzige) Abfrage zu verwenden.
        Ich wollte mit der "Nebeneinander" Variante andeuten, welche Daten-Ausgabe - Konstellationen sich je nach Verfahren ergeben.

        Jetzt ist die Frage, was ist eine einzige Abfrage. Wahrscheinlich geht es darum, eine Komponente oder Query in einem Programmcode zu befüllen oder einen Report, der nur eine Abfrage erlaubt.
        Die erste Variante mit Union- die auch nur eine Abfrage ist- ist da nicht so problematisch was das <outer> angeht.
        Gruß, defo

        Comment

        Working...
        X