From: | Thomas Markus <t(dot)markus(at)proventis(dot)net> |
---|---|
To: | Lars Grundei <l(dot)grundei(at)meteocontrol(dot)de>, "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org> |
Subject: | Re: Unterabfragen zusammenfassen??? |
Date: | 2014-04-01 10:39:31 |
Message-ID: | 533A9763.6040001@proventis.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Moins,
bereite die Query doch mal auf ;) so kann die nicht funktionieren
Ich würde die auf joins umstellen (hoffe es ist richtig so)
SELECT
CASE WHEN d.val = 0 THEN FALSE ELSE TRUE END AS result
FROM
tbl_d d
join tbl_a a on d.tbl_a_id=a.id
join view_a v1 on d.tbl_d_id=v1.tbl_b_id and v1.id_x = 564 AND
v1.ident_y = 'foo' AND v1.ident_z = 'bar'
join view_a v2 on d.tbl_c_id=v1.tbl_c_id and v2.id_x = 564 AND
v2.ident_y = 'foo' AND v2.ident_z = 'bar'
ORDER BY d.ts DESC LIMIT 1
das view_a doppelt auftritt lässt sich wohl kaum vermeiden
Gruss
Thomas
Am 01.04.2014 12:14, schrieb Lars Grundei:
>
> Hallo Zusammen,
>
>
>
> 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?
>
>
>
> Vielen Dank
>
> Lars
>
From | Date | Subject | |
---|---|---|---|
Next Message | Lars Grundei | 2014-04-01 12:17:30 | Re: Unterabfragen zusammenfassen??? |
Previous Message | Lars Grundei | 2014-04-01 10:14:09 | Unterabfragen zusammenfassen??? |