Re: IF ELSEIF Funktion in PL/pgSQL erstellen

From: Gunnar Nick Bluth <gunnar(dot)bluth(at)pro-open(dot)de>
To: Gunnar Oehmichen <oehm8895(at)uni-landau(dot)de>
Cc: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: IF ELSEIF Funktion in PL/pgSQL erstellen
Date: 2014-01-15 12:31:20
Message-ID: 20140115123152.3693D100A0B9@www.pro-open.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Na ja, deine neue View sollte sich natürlich auf die Tabelle beziehen, nicht auf sich selbst ;-)

Gruß/Best regards,

Gunnar "Nick" Bluth

Sent from my mobile
gunnar(dot)bluth(at)pro-open(dot)de
+49-172-8853339

Am 15.01.2014 13:06 schrieb Gunnar Oehmichen <oehm8895(at)uni-landau(dot)de>:
>
> Hallöchen Nick und Liste,
>
> erstmal Danke für die Antworten, war sehr hilfreich.
>
> nach anderer Arbeit und den Ferien mich jetzt mal wieder dem hier gewidmet.
>
> Ich habe also ausgeführt (auf das Beispiel und den View um den es mir
> eigentlich geht):
>
> CREATE OR REPLACE VIEW taxons AS (
> SELECT *, (case when taxon_name ~ 'sp.$' then
>                 case  when genus ~ 'idae$' then 'Familie'
>                 else 'Gattung'
>          end
>         else 'Art'
>         end) AS taxon_level
> FROM taxons);
>
> @Nick, deine Version funktioniert als Abfrage mit dem kleinen
> Beispielview jedoch nicht mit dem View um den es eigentlich geht (den
> ich euch der einfachheit halber natürlich vorenthalten habe).
>
> gunnar=# SELECT * from taxons;
>
>    family    |    genus    |      taxon_name      | taxon_level
> -------------+-------------+----------------------+-------------
> SPHAERIIDAE | Pisidium    | Pisidium personatum  | Art
> SPHAERIIDAE | Pisidium    | Pisidium sp.         | Gattung
> SPHAERIIDAE | Sphaeriidae | Sphaeriidae Gen. sp. | Familie
> (3 rows)
>
> Bei meinem eigentlichen View dagegen:
>
> ERROR:  infinite recursion detected in rules for relation "taxons_points"
>
>
> ********** Fehler **********
>
> ERROR: infinite recursion detected in rules for relation "taxons_points"
> SQL Status:42P17
>
> Könnt ihr mir weiterhelfen?
>
> Herzlichen Dank,
>
> Gunnar
>
> >
> > bluthg=# create or replace view tax_view as (select *,
> >         case when taxon_name ~ 'sp.$' then
> >                 case  when genus ~ 'idae$' then 'Familie'
> >                 else 'Gattung'
> >          end
> >         else 'Art'
> >         end
> >         from taxons
> > );
> > CREATE VIEW
> > Zeit: 29,059 ms
> > bluthg=# SELECT * from tax_view ;
> > +-------------+-------------+----------------------+---------+
> > |   family    |    genus    |      taxon_name      |  case   |
> > +-------------+-------------+----------------------+---------+
> > | SPHAERIIDAE | Pisidium    | Pisidium personatum  | Art     |
> > | SPHAERIIDAE | Pisidium    | Pisidium sp.         | Gattung |
> > | SPHAERIIDAE | Sphaeriidae | Sphaeriidae Gen. sp. | Familie |
> > +-------------+-------------+----------------------+---------+
> > (3 Zeilen)
>
>
> --
> Gunnar Oehmichen
> Quantitative Landscape Ecology
> Institute for Environmental Sciences
> University Koblenz-Landau
> Fortstrasse 7
> 76829 Landau
> Germany
> http://www.uni-koblenz-landau.de/landau/fb7/umweltwissenschaften/landscape-ecology/Staff/gunnaroehmichen
>
>
> --
> Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-de-allgemein

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Gunnar Oehmichen 2014-01-15 13:21:43 Re: IF ELSEIF Funktion in PL/pgSQL erstellen
Previous Message Gunnar Oehmichen 2014-01-15 12:06:14 Re: IF ELSEIF Funktion in PL/pgSQL erstellen