none
SELECT - Abfrage mit Daten aus zwei unterschiedlichen Tabellen RRS feed

  • Frage

  • Hallo

    ich hätte eine Frage bzw. ein Problem zu einer SELECT-Abfrage aus einer Tabelle mit weiteren Daten aus zwei verschiedenen Tabellen, und einer weiteren dritten Tabelle. Folgende Tabellen-Konstellation ist gegeben

    Tabelle-A - beinhaltet unter anderem zwei Foreign-Key-Spalten (int), wo immer jeweils eine davon belegt sein kann - zum Beispiel

    Tabelle_A.FK_ColumC1

    Tabelle_A.FK_ColumC2

    diese referenzieren auf zwei verschiedene Tabellen - z.B. Tabelle_C1 und Tabelle_C2; aus diesen Tabellen kommen ein paar Werte, und diese beiden Tabellen (C1 und C2) haben wieder eine FK-Referenz auf einen Tabelle_Person; aus der Tabelle Person kommen dann Personen-Spezifische Daten.

    D.h. in meiner Abfrage kommen zum Beispiel Nachname und Vorname aus der Personen-Tabelle, aber zuvor über zwei unterschiedliche Zwischen-Ergebnis-Tabellen Tabelle_C1 und Tabelle_C2.

    Jetzt möchte ich das Daten-Ergebnis so haben, dass aus der Tabelle_A plus Daten aus C1 / oder C2 plus Daten aus der Personen-Tabelle kommen; aber die Spalten für die Personen-Tabelle soll es nur einmal pro Zeile geben - als Beispiel dargestellt:

    Tabelle_A.Spalte1 | Tabelle_A.Spalte2 | Tabelle_C1.SpalteXX | Tabelle_C2.SpalteXZ | Tabelle_Person.Nachname | Tabelle_Person.Vorname | Tabelle_Person.Geburtsdatum

    Kann mir hier bitte jemand beim Aufbau dieses SELECT-Commands behilflich sein ?? 

    Vielen Dank schon mal & schönen Gruß

    Michael


    Michael Erlinger

    Donnerstag, 2. Juni 2016 06:57

Antworten

  • Hallo Michael,

    nuja, im einfachsten Fall hast Du zwei Abfragen (als Window Funktion), die Du dann bspw. mit UNION zusammenführst.

    WITH Query1 AS
    (
    SELECT ta.Feld1,
           ta.Feld2,
           tc1.FeldX
           FROM Tabelle_A ta
           INNER JOIN Tabelle_C1 tc1 ON ta.FK_ColumnC1 = tc1.ID
    ), Query2 AS
    (
    SELECT ta.Feld1,
           ta.Feld2,
           tc2.FeldX
           FROM Tabelle_A ta
           INNER JOIN Tabelle_C2 tc2 ON ta.FK_ColumnC2 = tc2.ID
    )
    SELECT q1.*
    FROM   Query1 q1
    UNION ALL
    SELECT q2.*
    FROM   Query1 q2
    

    Jetzt nur so als Beispiel.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert M.Erlinger Donnerstag, 2. Juni 2016 07:12
    Donnerstag, 2. Juni 2016 07:04
    Moderator

Alle Antworten

  • Hallo Michael,

    nuja, im einfachsten Fall hast Du zwei Abfragen (als Window Funktion), die Du dann bspw. mit UNION zusammenführst.

    WITH Query1 AS
    (
    SELECT ta.Feld1,
           ta.Feld2,
           tc1.FeldX
           FROM Tabelle_A ta
           INNER JOIN Tabelle_C1 tc1 ON ta.FK_ColumnC1 = tc1.ID
    ), Query2 AS
    (
    SELECT ta.Feld1,
           ta.Feld2,
           tc2.FeldX
           FROM Tabelle_A ta
           INNER JOIN Tabelle_C2 tc2 ON ta.FK_ColumnC2 = tc2.ID
    )
    SELECT q1.*
    FROM   Query1 q1
    UNION ALL
    SELECT q2.*
    FROM   Query1 q2
    

    Jetzt nur so als Beispiel.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert M.Erlinger Donnerstag, 2. Juni 2016 07:12
    Donnerstag, 2. Juni 2016 07:04
    Moderator
  • Hallo Stefan

    danke für Deine rasche Rückmeldung!!

    Das hat mir weitergeholfen.

    SG, Michael


    Michael Erlinger

    Donnerstag, 2. Juni 2016 07:13