| From: | Jonathan Vanasco <postgres(at)2xlp(dot)com> |
|---|---|
| To: | pgsql-general(at)postgresql(dot)org |
| Subject: | trying to write a bit of logic as one query, can't seem to do it under 2 |
| Date: | 2010-04-21 23:55:42 |
| Message-ID: | 9C156AE1-DAA5-414A-9511-ADCCAE617DFC@2xlp.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
I'm trying to write a bit of logic as 1 query, but I can't seem to do
it under 2 queries.
i'm hoping someone can help
the basic premise is that i have an inventory management system , and
am trying to update the quantity available in the "shopping
cart" (which is different than the independently tracked quantity
requested ).
the logic is fairly simple:
cart items should show the quantity_requested as available if that
number is <= the number of items in stock, otherwise they should show
the max number of items available
the solution i ended up with, is to just update the cart_items with
the entire quantity_available per product, and then fix that in a
second pass.
i'm wondering if this can be *efficiently* done within a single update
statement. i couldn't figure out how to do this in a single update,
and not make multiple queries to find the actual qty_available
UPDATE
cart_item
SET
qty_requested_available = ( SELECT qty_available FROM stock where
stock.id = stock_id)
;
UPDATE
cart_item
SET
qty_requested_available =
CASE
WHEN
qty_requested_available > qty_requested THEN qty_requested
ELSE
qty_requested_available
END
;
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Giles Lean | 2010-04-22 00:32:46 | Re: Database viewpoint of subject - Sending e-mails from database table with Cronjob |
| Previous Message | John Gage | 2010-04-21 22:07:10 | Identical command-line command will not work with \i metacommand and filename |