DinoMedlem sedan sep. 20011 914 inlägg Har då denna tabell, cartitems.
c_id | c_c_id | c_p_id | c_q
----------------------------------
1 | 1 | 4 | 2
[b] 2 | 1 | 32 | 1[/b]
3 | 2 | 9 | 1
[b] 4 | 2 | 32 | 4[/b]
5 | 1 | 27 | 1
6 | 2 | 6 | 1
Och via denna updaten
UPDATE cartitems SET c_c_id = @newcartID WHERE c_c_id = @oldcartID
så slås två olika c_c_id ihop, men om det finns dubbletter av c_p_id så vill jag att de skall slås ihop och dess c_q bli totalsumma av deras c_q. I tabellen ovan så vill jag alltså att rad 2 och 4 slås ihop och dess c_q värde blir 5.
LarsGMedlem sedan dec. 200012 464 inlägg Det går inte att få ihop i en fråga. Du måste ju ta bort den ena raden
if exists( select * from cartitems where c_c_id = @newcartid)
begin
update cartitems set c_q = (select sum(c_q) ... )
where ...
delete ...
end
else
update ...
Den första update går att skriva på lite olika sätt, det går också med en selfjoin istf subselect.
DinoMedlem sedan sep. 20011 914 inlägg Inte riktigt med. Först gör jag så att de får samma c_c_id och sen... Kan du beskriva i text vad som skall hända.
LarsGMedlem sedan dec. 200012 464 inlägg Beskriva ... Ett sql-statement säger mer än 1K eller ...
Bara för att vara helt på det klara med vad du vill
Vilka värden har @oldcartid och @newcartid i ditt exempel och hur skulle tabellen se ut efter update.
DinoMedlem sedan sep. 20011 914 inlägg Så här ser den del av koden som är aktuell ut nu:
DECLARE @oldcartID int, @newcartID int
SET @oldcartID = (SELECT cart_id FROM shoppingcart WHERE cart_cust_id = @cartcustID)
SET @newcartID = (SELECT cart_id FROM shoppingcart WHERE cart_cust_id = @username)
UPDATE shoppingcartitems SET carti_cart_id = @newcartID WHERE carti_cart_id = @oldcartID
DELETE shoppingcart WHERE cart_cust_id = @cartcustID
@oldcartID = ett id som är förknippat med en temp kund, i koden nedan = 2
@newcartID = ett id som är förknippat med en registrerad kund, i koden nedan = 1
Före:
c_id | c_c_id | c_p_id | c_q
----------------------------------
1 | 1 | 4 | 2
[b] 2 | 1 | 32 | 1[/b]
3 | 2 | 9 | 1
[b] 4 | 2 | 32 | 4[/b]
5 | 1 | 27 | 1
6 | 2 | 6 | 1
Efter:
c_id | c_c_id | c_p_id | c_q
----------------------------------
1 | 1 | 4 | 2
[b] 2 | 1 | 32 | 5[/b]
3 | 1 | 9 | 1
5 | 1 | 27 | 1
6 | 1 | 6 | 1
Endast två rader kan ha samma c_p_id.
DinoMedlem sedan sep. 20011 914 inlägg Drar upp denna tråd igen, då varken jag eller andra jag frågat lyckats lösa problemet.
RED// Löste sig.