Unterschiede finden

Hallo zusammen

Ich sehe gerade den Wald vor Bäumen nicht. Ich habe eine Tabelle aus einem zusammen gesetzten Key (Tabelle2)

Tabelle 1: [PK = ID]
ID (int)
Beschreibung (text)

Tabelle 2: [PK = ID, NR]
ID -> Verweis auf ‘ID’ von Tabelle 1
Nr (Text)
Beschreibung
Geometry

Beispieldatensätze
1|2015,‘234-34’,’…’,‘geom’
2|2015,‘567-35’,’…’,‘geom’
3|2015,‘888-36’,’…’,‘geom’
4|2016,‘234-34’,’…’,‘geom’
5|2016,‘567-35’,’…’,‘geom’

Die Nummern ‘234-34’ und ‘567-35’ sind in beiden Zeiträumen (2015 und 2016) vorhanden. Ich will nun eine Abfrage haben welche mir ersten anzeigt welche Nummern nur in einem Zeitraum vorhanden sind und / oder welche Nummern fehlen.

Kann mir da jemand einen Tipp geben?

Gruß Thomas

ich bin mir nicht sicher, dich korrekt zu verstehen. vereinfacht hast du:

test=# select * from t2;
 id |  nr  |  t   
----+------+------
  1 | 2015 | bla
  2 | 2015 | blub
  3 | 2015 | foo
  4 | 2016 | bla
  5 | 2016 | blub
(5 rows)

und suchst wohl:

test=# select t, count(1) from t2 group by t having count(1) = 1;
  t  | count 
-----+-------
 foo |     1
(1 row)

paßt das so?

Nein die 1,2,3,4,5 waren bloß Nummerierung

ID   |   NR   | Beschreibung | Geometrie |
-----+--------+--------------+-----------+
2015 | 234-34 | .....        | ......... |
2015 | 567-35 | .....        | ......... |
2015 | 888-36 | .....        | ..........|
2016 | 234-34 | .....        | ......... |
2016 | 567-35 | .....        | ......... |

so wäre die Tabelle ID + NR ergeben PK

ja. Ändert aber am Problem und auch an der Lösung nix, oder? nr bei mir -> id bei dir, und t bei mir -> nr bei dir.

Guten Morgen

Danke das ist es! :slight_smile:

SELECT nr, geometrie, count(nr) FROM tabelle2 WHERE id IN (2015,2016) GROUP BY nr, geometrie HAVING count(nr) = 1

Vielen lieben Dank.
Gruß Thomas