DDinoMedlem sedan sep. 20011 914 inlägg Har denna sql-sats:
DECLARE @total int
SELECT products.prod_id, products.prod_price, shoppingcartitems.carti_quantity
FROM shoppingcartitems INNER JOIN
shoppingcart ON shoppingcartitems.carti_cart_id = shoppingcart.cart_id INNER JOIN
products ON shoppingcartitems.carti_prod_id = products.prod_id
WHERE (shoppingcart.cart_cust_id = 12345)
som retunerar typ:
prod_id | prod_price | carti_quantity
-------------------------------------------
2 41 2
7 159 1
45 443 1
48 511 1
31 398 6
Plus detta så vill jag att @total skall få det totala värdet av prod_price * carti_quantity, alltså:
41 * 2 = 82
159 * 1 = 159
443 * 1 = 443
511 * 1 = 511
398 * 6 = 2388
-------------------
@total = 3583
Frågan är då, kan jag göra detta i samma fråga eller måste jag köra en separat fråga.
AaasahMedlem sedan mars 20034 471 inlägg Re: få ut en totalsumma
Pröva följande, dock vet jag inte om det går:
DECLARE @total int
SELECT P.prod_id, P.prod_price, S.carti_quantity, P.prod_price*S.carti_quantity AS total_price
FROM shoppingcartitems S INNER JOIN shoppingcart ON S.carti_cart_id = shoppingcart.cart_id INNER JOIN
products P ON S.carti_prod_id = products.prod_id
WHERE (shoppingcart.cart_cust_id = 12345)
(Införde S och P för att det skulle bli mer lättläst.)
DDinoMedlem sedan sep. 20011 914 inlägg Nää, det var inte riktigt som jag hade tänkt mig. Resultatet blir en extra kolumn med summan ex. 41*2 = visar 82. Det är alltså @total som skall få total värdet. Har en temp lösning med en select som tar ut info enligt selecten i första inlägget och en select som nedan, som då ger totalsumman till @total som skickas tillbaka med en output parameter.
SELECT @total = sum(products.prod_price* shoppingcartitems.carti_quantity)
FROM shoppingcartitems INNER JOIN
shoppingcart ON shoppingcartitems.carti_cart_id = shoppingcart.cart_id INNER JOIN
products ON shoppingcartitems.carti_prod_id = products.prod_id
WHERE (shoppingcart.cart_cust_id = 12345)
Tänkte om man kunde slå samman frågorna till en.
LLarsGMedlem sedan dec. 200012 464 inlägg Om du vill ha värdet i en parameter så ser jag inget bättre alternativ än din temp-lösning.
Om du vill ha allt i en fråga så får du nog leva med en extra kolumn
SELECT products.prod_id, products.prod_price, shoppingcartitems.carti_quantity, sum(prod_price*carti_quantity)
FROM shoppingcartitems INNER JOIN
shoppingcart ON shoppingcartitems.carti_cart_id = shoppingcart.cart_id INNER JOIN
products ON shoppingcartitems.carti_prod_id = products.prod_id
WHERE (shoppingcart.cart_cust_id = 12345)
group by products.prod_id, products.prod_price, shoppingcartitems.carti_quantity
with rollup
DDinoMedlem sedan sep. 20011 914 inlägg Ok, då låter jag det vara som det är. Tack. :)