Benutzer mit den meisten Antworten
SQL Abfrage Problem bezüglich einer Datenbankauswertung

Frage
-
Hallo,
ich habe ein SQL Abfrage Problem bezüglich einer Datenbankauswertung.
Die Datenbank bestizt 2 Tabellen
Tabelle 1) Name, Vorname, Geburtstag, PNummer
Tabelle 2) PNummer, Ergebniss
In der Spalte Ergebnis können diese Werte stehen (1a; 2b; 2n; 3a; 3f ;5 ;6).
PNummer ist der Key zwischen den Tabellen (1 zu n (Tabelle 1 / Tabelle 2)). Eine Person ist eindeutig zu identifizieren, wenn der Name + Vorname + Geburtstag übereinstimmen.
Eine Person kann mehrere Einträge in der Tabelle 2 besitzen. Ich muss nur herausfinden, welches der höchste Eintrag (bezieht sich immer auf die Zahl) für eine Person ist.
Das Datenbankschema kann nicht geändert werden und besitzt redundante Daten. Da kann ich leider nichts editieren.
Danke für Eure Hilfe
Stefan
Antworten
-
Es ist schade, wenn so ein Thread im Sande verläuft. Leider haben wir auch nicht wirklich viele Informationen über die Tabellen erhalten.
Hier mal ein alternativer Ansatz, der andere Sachen voraussetzt:
-- Unter der Voraussetzung, dass PNummer nicht der Primary Key ist Declare @Tab1 as Table(Name varchar(20), Vorname varchar(20), Geburtstag date, PNummer int); Declare @Tab2 as Table(PNummer int, Ergebnis char(2)); Insert into @Tab1(Name, Vorname, Geburtstag, PNummer) Values ('Mustermann', 'Max', '19800101', 1); Insert into @Tab1(Name, Vorname, Geburtstag, PNummer) Values ('Mustermann', 'Max', '19901010', 3); Insert into @Tab1(Name, Vorname, Geburtstag, PNummer) Values ('Mustermann', 'Ida', '19800102', 1); Insert into @Tab1(Name, Vorname, Geburtstag, PNummer) Values ('Mustermann', 'Tom', '19800102', 2); Insert into @Tab2(PNummer, Ergebnis) values (1, '1a'); Insert into @Tab2(PNummer, Ergebnis) values (1, '1b'); Insert into @Tab2(PNummer, Ergebnis) values (2, '2n'); Insert into @Tab2(PNummer, Ergebnis) values (3, '4'); Insert into @Tab2(PNummer, Ergebnis) values (3, '5'); Insert into @Tab2(PNummer, Ergebnis) values (3, '6'); Select Name, Vorname, Geburtstag, MAX(t2.Ergebnis) as Ergebnis_max from @Tab1 t1 Inner Join @Tab2 t2 on t1.PNummer = t2.PNummer group by Name, Vorname, Geburtstag order by Name, Vorname, Geburtstag;
Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Christoph Muthmann Dienstag, 1. März 2016 12:40
- Als Antwort markiert Aleksander Chalabashiev Mittwoch, 9. März 2016 09:00
- Tag als Antwort aufgehoben SK3110 Donnerstag, 10. März 2016 09:22
- Als Antwort markiert SK3110 Donnerstag, 10. März 2016 09:22
Alle Antworten
-
Hallo Stefan,
Hier mal ein Entwurf auf die schnelle.
select t1.name, t1.vorname, t1.geburtstag, (select max(t2.ergebnis) from tabelle2 as t2 where t1.pnummer = t2.pnummer) from tabelle1 as t1
Benjamin Hoch
MCSE: Data Platform,
MCSA: Windows Server 2012,- Als Antwort vorgeschlagen Christoph Muthmann Dienstag, 1. März 2016 12:40
-
Es ist schade, wenn so ein Thread im Sande verläuft. Leider haben wir auch nicht wirklich viele Informationen über die Tabellen erhalten.
Hier mal ein alternativer Ansatz, der andere Sachen voraussetzt:
-- Unter der Voraussetzung, dass PNummer nicht der Primary Key ist Declare @Tab1 as Table(Name varchar(20), Vorname varchar(20), Geburtstag date, PNummer int); Declare @Tab2 as Table(PNummer int, Ergebnis char(2)); Insert into @Tab1(Name, Vorname, Geburtstag, PNummer) Values ('Mustermann', 'Max', '19800101', 1); Insert into @Tab1(Name, Vorname, Geburtstag, PNummer) Values ('Mustermann', 'Max', '19901010', 3); Insert into @Tab1(Name, Vorname, Geburtstag, PNummer) Values ('Mustermann', 'Ida', '19800102', 1); Insert into @Tab1(Name, Vorname, Geburtstag, PNummer) Values ('Mustermann', 'Tom', '19800102', 2); Insert into @Tab2(PNummer, Ergebnis) values (1, '1a'); Insert into @Tab2(PNummer, Ergebnis) values (1, '1b'); Insert into @Tab2(PNummer, Ergebnis) values (2, '2n'); Insert into @Tab2(PNummer, Ergebnis) values (3, '4'); Insert into @Tab2(PNummer, Ergebnis) values (3, '5'); Insert into @Tab2(PNummer, Ergebnis) values (3, '6'); Select Name, Vorname, Geburtstag, MAX(t2.Ergebnis) as Ergebnis_max from @Tab1 t1 Inner Join @Tab2 t2 on t1.PNummer = t2.PNummer group by Name, Vorname, Geburtstag order by Name, Vorname, Geburtstag;
Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Christoph Muthmann Dienstag, 1. März 2016 12:40
- Als Antwort markiert Aleksander Chalabashiev Mittwoch, 9. März 2016 09:00
- Tag als Antwort aufgehoben SK3110 Donnerstag, 10. März 2016 09:22
- Als Antwort markiert SK3110 Donnerstag, 10. März 2016 09:22