Re: Zusammenfassung mehrerer boolean Spalten

From: Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at>
To: "'Gunnar Oehmichen *EXTERN*'" <oehm8895(at)uni-landau(dot)de>, "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Zusammenfassung mehrerer boolean Spalten
Date: 2015-11-18 15:55:09
Message-ID: A737B7A37273E048B164557ADEF4A58B50FE72CF@ntex2010i.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Gunnar Oehmichen wrote:
> Folgendes Problem:
>
> Ich habe zwei räumliche Tabellen (PostGIS) Kat und Geb.
> Ich teste mit unterschiedlichen PostGIS Funktionen ob sich die einzelnen
> Geometrien (Multipolygone) der beiden Tabellen überschneiden/überlagern
> etc (also ob diese Flächen miteinander Teilen):
>
> zB:
>
> SELECT Kat.id AS kat_id, Geb.id AS geb_id,
>
> ST_Intersects (Kat.geom, Geb.geom) AS Kat_inters_Geb,
> ST_Contains (Kat.geom, Geb.geom) AS Kat_contains_Geb,
> ST_Within (Kat.geom, Geb.geom) AS Kat_in_Geb
>
> FROM Kat CROSS JOIN Geb;
>
> Alle drei (und weitere nicht gezeigte) ST_ Funktionen haben einen
> boolean Output.
>
> kat_id geb_id kat_inters_geb kat_contains_geb kat_in_geb
> 1 130294 3214 FALSE FALSE FALSE
> 2 130294 3215 FALSE FALSE FALSE
> 3 130294 3216 FALSE FALSE FALSE
>
> Ich würde gerne in der gleichen Abfrage mir eine Spalte ausgeben lassen,
> welche bezeichnet ob überhaupt in einer Reihe einer der Vergleiche TRUE
> ist (oder wie viele TRUE sind).

Sowas in der Art:

WITH t AS
(SELECT Kat.id AS kat_id, Geb.id AS geb_id,
ST_Intersects (Kat.geom, Geb.geom) AS Kat_inters_Geb,
ST_Contains (Kat.geom, Geb.geom) AS Kat_contains_Geb,
ST_Within (Kat.geom, Geb.geom) AS Kat_in_Geb)
SELECT kat_id, geb_id, kat_inters_geb, kat_contains_geb, kat_in_geb,
kat_inters_geb OR kat_contains_geb OR kat_in_geb AS any_true
FROM t

Ich habe es nicht getestet, aber das Konzept sollte klar sein.

> Außerdem, wenn möglich eine Spalte welche die Spalte(n) bezeichnet
> welche TRUE ist/sind.
>
> Ist dies möglich? Es dürfte sicherlich keine Rolle spielen, dass ich
> hier spezielle PostGIS Funktionen nutze, sondern der Output müsste
> entscheidend sein.

In der äußeren Abfrage könnte ein Konstrukt stehen wie:

CASE WHEN kat_inters_geb
THEN 'kat_inters_geb'
WHEN kat_contains_geb
THEN 'kat_contains_geb'
WHEN kat_in_geb
THEN 'kat_in_geb'
ELSE NULL
END

Liebe Grüße,
Laurenz Albe

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Thomas Markus 2015-11-18 16:01:27 Re: Zusammenfassung mehrerer boolean Spalten
Previous Message Andreas Kretschmer 2015-11-18 15:52:11 Re: Zusammenfassung mehrerer boolean Spalten