Re: Zusammenfassung mehrerer boolean Spalten V2

From: Max Strobel <kontakt(at)it-beratung-strobel(dot)net>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Zusammenfassung mehrerer boolean Spalten V2
Date: 2015-11-19 18:06:49
Message-ID: 564E0FB9.5070002@it-beratung-strobel.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

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 immutable; -- immer gleiches Ergebnis bei gleichen Argumenten

Test:
===

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

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

Das kann man auch in einer SQL-Funktion machen, das macht die query übersichtlicher.
Abgesehen davon dass SQL nicht so gut lesbar ist wie Tcl ...

/Str.

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas Kretschmer 2015-11-20 09:54:48 Re: Zusammenfassung mehrerer boolean Spalten
Previous Message Max Strobel 2015-11-19 17:53:58 Re: Zusammenfassung mehrerer boolean Spalten