Servus,
Ich möchte einen neuen Datensatz einer Tabelle mit allen vorhandenen Datensätzen in der Tabelle vergleichen (true/false).
Mit dem folgenden will ich die neuen Datensätze vergleichen (ST_Overlaps liefert True/False):
IF (SELECT ST_Overlaps(NEW.geometry,a.geometry) FROM flaechen a) = 't' THEN
RAISE EXCEPTION 'Erstellte Geometrie ungueltig!';
ELSE
RETURN NEW;
Der Fehler dabei ist:
ERROR: more than one row returned by a subquery used as an expression
Ist auch einleuchtend, weil PG bei ST_Overlaps genau zwei Geometrien vergleichen will. Mit dem obigen Code vergleiche ich aber eine mit vielen Geometrien.
Wie kann man denn einen Datensatz einer Tabelle mit allen anderen in der Tabelle vergleichen?
Irgendwie iterieren (?):
vergleiche NEW.geometry mit geometry where id = 1; ergebnis false
vergleiche NEW.geometry mit geometry where id = 2; ergebnis false
…
vergleiche NEW.geometry mit geometry where id = n; ergebnis true
und bei true die ganze Sache abblasen.
Wie setze ich das in SQL um?
gruß,
Johannes