Re: Unterabfragen zusammenfassen???

From: Lars Grundei <l(dot)grundei(at)meteocontrol(dot)de>
To: "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Unterabfragen zusammenfassen???
Date: 2014-04-01 12:29:21
Message-ID: 0EAF4A34C2A33B4FB958F0A6150072AC51312A61F0@mcsrv03.meteocontrol.intra
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Hallo Zusammen,

die schnellste Variant ist die von Laurenz. Auch was die Ausgaben von EXPLAIN anlangt, wobei ich da immer noch an meiner Interpretation zweifele, siehe vorherige Mail.
Dennoch vielen Dank, ist genau das was ich meinte :)

Viele Grüße
Lars

-----Ursprüngliche Nachricht-----
Von: Albe Laurenz [mailto:laurenz(dot)albe(at)wien(dot)gv(dot)at]
Gesendet: Dienstag, 1. April 2014 14:22
An: Lars Grundei; pgsql-de-allgemein(at)postgresql(dot)org
Betreff: RE: Unterabfragen zusammenfassen???

Lars Grundei schrieb:
> Ich habe diese Abfrage, die auch soweit Funktioniert:
>
> SELECT CASE WHEN val = 0 THEN FALSE ELSE TRUE END AS result FROM
> tbl_d WHERE tbl_a_id = (SELECT id FROM tbl_a WHERE
> tbl_b_id = (SELECT tbl_b_id FROM view_a WHERE id_x = 564 AND
> ident_y = 'foo' AND ident_z = 'bar') AND
> tbl_c_id = (SELECT tbl_c_id FROM view_a WHERE id_x = 564 AND ident_y = 'foo' AND ident_z = 'bar')
> )
> ORDER BY ts DESC LIMIT 1
>
> Was mich stört ist der Umstand, dass eine Unterabfrage bzw. Subquery
> zweimal ausgeführt wird (wenn EXPLAIN nicht lügt), einmal wird halt
> tbl_b_id und einmal tbl_c_id geliefert, gibt es irgendwie eine Möglichkeit, dass ich die Zusammenfasse?

Was wäre mit

... WHERE (tbl_b_id, tbl_c_id) = (SELECT tbl_b_id, tbl_c_id FROM view_a WHERE id_x = 564 AND ident_y = 'foo' AND ident_z = 'bar') ...

Liebe Grüße,
Laurenz Albe

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Asmus Reinhard 2014-04-03 11:46:20 pgadmin3 1.18.1 - unterstützte Serverversionen
Previous Message Thomas Markus 2014-04-01 12:25:50 Re: Unterabfragen zusammenfassen???