Rozważ skorzystanie z poniższego kodu. Typ enum_buysell
zawiera tylko 2 wartości: buy
i sell
. Muszę po prostu uzyskać przeciwną wartość w niektórych przypadkach, ale kod wygląda brzydko, imho. Czy istnieje sposób na jej optymalizację? Myślałem, że w ogóle nie używam enum, np. zamiast tego jest to boolean, ale ten pomysł nie jest idealny, ponieważ powoduje, że dane same w sobie są mniej oczywiste.Postgres: Jak uzyskać następny element w zestawie enum?
select
datetime,
case
when account_id_active = p_account_id and direction = 'buy' then 'buy'::enum_buysell
when account_id_active = p_account_id and direction = 'sell' then 'sell'::enum_buysell
when account_id_passive = p_account_id and direction = 'buy' then 'sell'::enum_buysell
when account_id_passive = p_account_id and direction = 'sell' then 'buy'::enum_buysell
end as direction,
price,
volume
from
deals
where
account_id_active = p_account_id or
account_id_passive = p_account_id
order by
datetime desc
limit
10;
logicznych: enum jest fundamentalnie * * nieuporządkowana. – wildplasser
@wildplasser, zasadniczo masz absolutną rację, ale to nie dotyczy postgres, - spójrz na [docs: 8.7.2. Zamawianie] (http://www.postgresql.org/docs/9.4/static/datatype-enum.html) –