---
title: "2 rader = 1 & nytt total värde"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/76030-2-rader-1-nytt-total-värde"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Dino"
published: "2003-05-05T20:32:40.000Z"
updated: "2003-05-16T17:31:22.000Z"
replies: 5
views: 262
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/76030-2-rader-1-nytt-total-värde"
---

# 2 rader = 1 & nytt total värde

## #1 — Dino, 2003-05-05T20:32Z

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.

Permalänk: https://www.webforum.nu/p/76030

## #2 — LarsG, 2003-05-05T20:39Z

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.

Permalänk: https://www.webforum.nu/p/1035675

## #3 — Dino, 2003-05-05T20:55Z

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.

Permalänk: https://www.webforum.nu/p/1035700

## #4 — LarsG, 2003-05-06T17:47Z

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.

Permalänk: https://www.webforum.nu/p/1039296

## #5 — Dino, 2003-05-06T20:50Z

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.

Permalänk: https://www.webforum.nu/p/1039469

## #6 — Dino, 2003-05-16T17:31Z

Drar upp denna tråd igen, då varken jag eller andra jag frågat lyckats lösa problemet.

RED// Löste sig.

Permalänk: https://www.webforum.nu/p/1051086

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/76030-2-rader-1-nytt-total-värde
