Thom Brown a écrit :
...
2009/10/29 Daniel Chiaramello <daniel.chiaramello@xxxxxxxxx>:
Never mind, I found how finally:
UPDATE
product
SET
qty = qty+s_count
FROM (
SELECT
intermediate.product_id,
count(*) AS s_count
FROM
intermediate,
orders
WHERE
orders.intermediate_id=intermediate.id
GROUP BY
intermediate.product_id
) AS summary
WHERE
summary.product_id = product.id
;
Sorry for disturbance!
Daniel
Your solution looks like it would perform a cumulative calculation.
Surely you'd want qty = s_count?
In any case, wouldn't you be better off not having a quantity column
at all and just calculate it with either a query or a view?
Example:
SELECT product.id, COUNT(intermediate.product_id)
FROM product
LEFT JOIN intermediate ON product.id = intermediate.product_id
GROUP BY product.id
ORDER BY product.id
Or include a product name in the product table to get more meaningful
output. You'd then get an output like:
id name count
1 Orange 5
2 Apples 7
3 Pears 2
4 Kiwi 0
If you don't want ones for which there have been no orders for (or
whatever your intermediate table is for), use an INNER JOIN instead.
Regards
Thom
Thanks for anwer, but no, it's really adding the number of entries to my
"qty" field. The "orders" table is a transient one and is cleaned regularly.
Of course, the example I gave is a simplified one (there are no orders
or products, I chose these names to ease the understanding of my
problem) - in reality, the problem is much complicated than that :)
But thanks for answer anyways.
Daniel
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general