Re: trying to write a bit of logic as one query, can't seem to do it under 2

Поиск
Список
Период
Сортировка
От Glen Parker
Тема Re: trying to write a bit of logic as one query, can't seem to do it under 2
Дата
Msg-id 4BCF9D89.2050309@nwlink.com
обсуждение исходный текст
Ответ на Re: trying to write a bit of logic as one query, can't seem to do it under 2  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: trying to write a bit of logic as one query, can't seem to do it under 2  (Jonathan Vanasco <postgres@2xlp.com>)
Список pgsql-general
Tom Lane wrote:
> Jonathan Vanasco <postgres@2xlp.com> writes:
>> I'm trying to write a bit of logic as 1 query, but I can't seem to do
>> it under 2 queries.
>
> Uh, why can't you just push that CASE expression into the sub-select?
>
> <QUERY SNIPPED>
>
> You might have to qualify qty_requested here to make sure it comes from
> cart_item, if there's a column of the same name in stock.
>
> BTW, I'd suggest using GREATEST() instead of the CASE, but that's
> just a minor improvement.

Like so?

UPDATE
   cart_item
SET
   qty_requested_available = least(cart_item.qty_requested,
stock.qty_available)
FROM
   stock
WHERE
   cart_item.stock_id = stock.stock_id AND
   qty_requested_available <> least(cart_item.qty_requested,
stock.qty_available);


Also note the qualifier that prevents the query from updating every
cart_item row whether it needs it or not.

-Glen


В списке pgsql-general по дате отправления:

Предыдущее
От: Craig Ringer
Дата:
Сообщение: Re: installation on vista
Следующее
От: Jonathan Vanasco
Дата:
Сообщение: Re: trying to write a bit of logic as one query, can't seem to do it under 2