Dubletten entfernen

LordExcalibur

Benutzer
Beiträge
6
Hallo,

ich habe zwei Tabellen die ich über UNION verknüfpt habe.
Nun kann es dabei vorkommen, dass Datensätze in kombination einzelner Feldern identisch sind, jedoch nicht der komplette Datensatz identisch ist. Im Ergebnis möchte ich in diesen Fällen nur die Datensätze aus der ersten Tabelle haben.

Beispiel:

Tabelle 1:
Datum | Name | Wert
1.1.2016 | Mustermann | 123
2.1.2016 | Mustermann | 555
1.1.2016 | Meier | 444
2.1.2016 | Meier | 777

Tabelle 2:
Datum | Name | Wert
1.1.2016 | Mustermann | 234
3.1.2016 | Mustermann | 666
3.1.2016 | Meier | 456
4.1.2016 | Meier | 789


Das Ergebnis soll sein:
Datum | Name | Wert
1.1.2016 | Mustermann | 123
2.1.2016 | Mustermann | 555
3.1.2016 | Mustermann | 666
1.1.2016 | Meier | 444
2.1.2016 | Meier | 777
3.1.2016 | Meier | 456
4.1.2016 | Meier | 789

Da für den jeweils ersten Datensatz das Datum und der Name identisch sind, soll nur der Datensatz der ersten Tabelle im Ergebnis auftauchen.
Wie kann man sowas realisieren?

Danke
Sebastian
 
Werbung:
quick & dirty:

Code:
test=*# select * from l1;
  datum  |  name  | wert
----------+------------+------
 1.1.2016 | Mustermann |  123
 2.1.2016 | Mustermann |  555
 1.1.2016 | Meier  |  444
 2.1.2016 | Meier  |  777
(4 Zeilen)

test=*# select * from l2;
  datum  |  name  | wert
----------+------------+------
 1.1.2016 | Mustermann |  234
 3.1.2016 | Mustermann |  666
 3.1.2016 | Meier  |  456
 4.1.2016 | Meier  |  789
(4 Zeilen)

test=*# select * from (select distinct on (datum, name) * from (select *, 'l1' as t from l1 union all select *, 'l2' from l2) foo order by datum, name, t) x order by name desc, datum;;
  datum  |  name  | wert | t  
----------+------------+------+----
 1.1.2016 | Mustermann |  123 | l1
 2.1.2016 | Mustermann |  555 | l1
 3.1.2016 | Mustermann |  666 | l2
 1.1.2016 | Meier  |  444 | l1
 2.1.2016 | Meier  |  777 | l1
 3.1.2016 | Meier  |  456 | l2
 4.1.2016 | Meier  |  789 | l2
(7 Zeilen)

test=*#

Ich denke mal, das geht noch besser. Vielleicht reiche ich morgen was besseres nach.
 
Zurück
Oben