Benutzer mit den meisten Antworten
SELECT - Abfrage mit Daten aus zwei unterschiedlichen Tabellen

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
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
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