Temat: SELECT ... IF (???)
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?
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
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ć