<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - SELECT ... IF (???)]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=2249</link>
		<description><![CDATA[Najświeższe odpowiedzi w SELECT ... IF (???).]]></description>
		<lastBuildDate>Wed, 07 Jan 2015 14:40:15 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: SELECT ... IF (???)]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5408#p5408</link>
			<description><![CDATA[Działa!

Bardzo dziękuję :)]]></description>
			<author><![CDATA[dummy@example.com (grzechu)]]></author>
			<pubDate>Wed, 07 Jan 2015 14:40:15 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5408#p5408</guid>
		</item>
		<item>
			<title><![CDATA[Odp: SELECT ... IF (???)]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5407#p5407</link>
			<description><![CDATA[distinct on ci pomoże.

Zasadniczo coś w stylu:

select
distinct on (btrim(...nazwa))
    btrim(...nazwa),
    split_part(..., ..., 1)
from ...
where ...
order by btrim(...nazwa), case adres.rodz_adr
when 'KOR' then 1
when 'TYM' then 2
...
WHEN 'INN' then 6
end
;]]></description>
			<author><![CDATA[dummy@example.com (depesz)]]></author>
			<pubDate>Tue, 06 Jan 2015 20:36:39 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5407#p5407</guid>
		</item>
		<item>
			<title><![CDATA[SELECT ... IF (???)]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=5406#p5406</link>
			<description><![CDATA[Uszanowanie wszystkim,

Potrzebuję wyciągnąć z tabeli adresy.
Adresy te mają określone cechy (np. korespondencyjny, stały, siedziby) i określoną wagę tych cech (np. najważniejszy jest korespondencyjny, potem tymczasowy, najmniej ważny inny).
Jak powinno wyglądać zapytanie znajdujące tylko jeden adres o najwyższej wadze?
Czyli - z poniższego przykładu - jak spowodować "wyjście" z CASE po znalezieniu pierwszego pasującego przypadku w kolejności takiej, jak jak to określono poniżej?

[code]
SELECT
    btrim(organizacja.nazwa_organiz),
    CASE adres.rodz_adr
        WHEN 'KOR' THEN split_part(adres.adres_opisowy, ', tel.' , 1)
        WHEN 'TYM' THEN split_part(adres.adres_opisowy, ', tel.' , 1)
        WHEN 'STA' THEN split_part(adres.adres_opisowy, ', tel.' , 1)
        WHEN 'ZAM' THEN split_part(adres.adres_opisowy, ', tel.' , 1)
        WHEN 'SIE' THEN split_part(adres.adres_opisowy, ', tel.' , 1)
        WHEN 'INN' THEN split_part(adres.adres_opisowy, ', tel.' , 1)
    END

FROM
    organizacja, adres
WHERE
    organizacja.id = adres.id
ORDER BY
    organizacja.nazwa_organiz
[/code]

Mam PostgreSQL 8.3, nie może to być funkcja...

Z racji niewielkiego doświadczenia nie mam nawet pojęcia w którym kierunku kombinować :/]]></description>
			<author><![CDATA[dummy@example.com (grzechu)]]></author>
			<pubDate>Tue, 06 Jan 2015 19:22:32 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=5406#p5406</guid>
		</item>
	</channel>
</rss>
