Ik heb in mijn DB twee tabellen: één met producten en één met winkels die gekoppeld zijn aan een product. Nu wil ik in de productentabel o.a. de minimale en maximale prijzen voor een bepaald product wegschrijven en deze prijzen moeten uit de gekoppelde tabel komen. Ik gebruik hiervoor de volgende query:
Zoals je kunt zien gebruik ik hier vijf subqueries voor, wat zeer inefficient is: ik zou het liefst één subquery willen gebruiken die vijf resultaten teruggeeft en die resultaten dan vervolgens in de juiste velden willen schrijven. Is dit mogelijk? Ik gebruik MySQL 4, dus stored procedures zijn helaas niet mogelijk. Het mooiste zou zijn als UPDATE ook een variant had zoals INSERT, namelijk met VALUES(...,...,...), maar voorzover ik weet bestaat dat niet...
SQL:
1
2
3
4
5
6
| UPDATE Products SET price_min = (SELECT MIN(price) FROM ProductsPerShop WHERE ProductsPerShop.item_id = Products.item_id), price_max = (SELECT MAX(price) FROM ProductsPerShop WHERE ProductsPerShop.item_id = Products.item_id), price_min_total = (SELECT MIN(price_total) FROM ProductsPerShop WHERE ProductsPerShop.item_id = Products.item_id), price_max_total = (SELECT MAX(price_total) FROM ProductsPerShop WHERE ProductsPerShop.item_id = Products.item_id), shop_count = (SELECT COUNT(DISTINCT shop_id) FROM ProductsPerShop WHERE ProductsPerShop.item_id = Products.item_id) |
Zoals je kunt zien gebruik ik hier vijf subqueries voor, wat zeer inefficient is: ik zou het liefst één subquery willen gebruiken die vijf resultaten teruggeeft en die resultaten dan vervolgens in de juiste velden willen schrijven. Is dit mogelijk? Ik gebruik MySQL 4, dus stored procedures zijn helaas niet mogelijk. Het mooiste zou zijn als UPDATE ook een variant had zoals INSERT, namelijk met VALUES(...,...,...), maar voorzover ik weet bestaat dat niet...