Re: Unterabfragen zusammenfassen???

Albe Laurenz <[email protected]> Tue, 1 Apr 2014 12:22:25 +0000
Newsgroups gmane.comp.db.postgresql.german
Message-ID <A737B7A37273E048B164557ADEF4A58B17CEA128@ntex2010i.host.magwien.gv.at>
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

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