Re: Zusammenfassung mehrerer boolean Spalten

Max Strobel <[email protected]> Thu, 19 Nov 2015 18:53:58 +0100
Newsgroups gmane.comp.db.postgresql.german
Organization IT-Beratung Strobel
Message-ID <[email protected]>

On 18.11.2015 16:32, Gunnar Oehmichen wrote:
> Hallo,
>
> 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).
> Außerdem, wenn möglich eine Spalte welche die Spalte(n) bezeichnet
> welche TRUE ist/sind.
>
Mein Vorschlag: der Eigenschaft einen Buchstaben zuweisen und anzeigen:

create or replace function showbools(boolean, boolean, boolean) returns text as $$
  set res ""
  foreach {c flag} [list "A" $1 "B" $2 "C" $3] {
    if {$flag} {
      append res $c
    } else {
      append res "-"}
  }
  return $res
$$ language pltcl stable;

Test:
===

strobel=# select showbools(false,false,false) as feature1, showbools(true,false,true)
as feature2;

 feature1 | feature2
----------+----------
 ---      | A-C
(1 Zeile)


/Str.



-- 
Sent via pgsql-de-allgemein mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein