---
title: "Hämta och uppdatera värden samtidigt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/185048-hämta-och-uppdatera-värden-samtidigt"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Per"
published: "2010-10-27T14:22:39.000Z"
updated: "2010-10-27T16:43:15.000Z"
replies: 4
views: 454
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/185048-hämta-och-uppdatera-värden-samtidigt"
---

# Hämta och uppdatera värden samtidigt

## #1 — Per, 2010-10-27T14:22Z

Hej!

Jag har en databas (se bifogad fil) bestående utav tre tabeller; main, misc och tempADUser. Tabellen tempADUser är helt fristående men kolumnen ipPhone har samma värde som telno i main.

Vad jag vill uppnå är att för varje post i ipPhone vilja jag skapa två poster i misc, där misc.recno är samma som main.record_id, misc.miscno är 8 respektive 15 och misc.mtext är tempADUser.ipPhone respektive tempADUser.extensionAttribute1.

**Exempel på innehåll:**
main: 1, 1234
tempADUser: 1234, A, B

**Resultat:**
misc: 1, 8, A
misc: 1, 15, B

Lite rörigt, men jag hoppas ni förstår  :)

DB är MSSQL 2008 R2

Bilagor:

- [wf.pdf](https://www.webforum.nu/a/22148.pdf)

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

## #2 — nitro2k01, 2010-10-27T15:06Z

Du får dela upp det i två frågor:

```
INSERT INTO misc (recno, miscno, text)
SELECT main.record_id AS recno, 8 AS misc.miscno, tempADUser.ipPhone
FROM tempADUser 
INNER JOIN main ON main.telno = tempADUser.ipPhone;

INSERT INTO misc (recno, miscno, text)
SELECT main.record_id AS recno, 15 AS misc.miscno, tempADUser.extensionAttribute1
FROM tempADUser 
INNER JOIN main ON main.telno = tempADUser.ipPhone;
```

Koden förutsätter att ipPhone och telno matchar varandra. Telefonnummer som inte finns i båda tabellerna kommer inte att infogas i misc.

Edit: Du vill kanske lägga till villkoret "IS NOT NULL" på data-kolumnerna för att inte få rader i misc med NULL-attribut.

```
INSERT INTO misc (recno, miscno, text)
SELECT main.record_id AS recno, 8 AS misc.miscno, tempADUser.ipPhone
FROM tempADUser 
INNER JOIN main ON main.telno = tempADUser.ipPhone
WHERE tempADUser.ipPhone IS NOT NULL;

INSERT INTO misc (recno, miscno, text)
SELECT main.record_id AS recno, 15 AS misc.miscno, tempADUser.extensionAttribute1
FROM tempADUser 
INNER JOIN main ON main.telno = tempADUser.ipPhone;
WHERE tempADUser.extensionAttribute1 IS NOT NULL;
```

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

## #3 — Per, 2010-10-27T15:34Z

Hej, antar att text ska vara mtext.

Får dock följande fel när jag exekverar:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '.'.

Syftar \_troligen\_ på misc.miscno...

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

## #4 — nitro2k01, 2010-10-27T15:36Z

mtext, jo visst. Ta bort "AS" och prova igen. 

Edit: Och "misc." i "misc.miscno".

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

## #5 — Per, 2010-10-27T16:43Z

```
INSERT INTO misc (recno, miscno, mtext)
SELECT main.record_id AS recno, 8 AS miscno, tempADUser.company
FROM tempADUser 
INNER JOIN main ON main.telno = tempADUser.ipPhone
WHERE tempADUser.ipPhone IS NOT NULL;
```

Funkar toppen   (y)

Nu över till vidare utveckling, om jag först vill se om posten finns i misc och i sådana fall uppdatera den annars skapa en ny... Hur göra? Min tanke är att skapa en SP för detta, har börjat lite smått men inte kommit på något bra sätt att kolla om posten finns eller ej..

```
USE [nice]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_INSERTUPDATEEMP]
( 
  @Recno AS int, 
  @Miscno AS int, 
  @MText AS varchar(255)
)
AS
BEGIN
 IF EXISTS (................) 
    BEGIN
        UPDATE  misc
        SET  mtext = @MText
        WHERE recno = @Recno AND miscno = @Miscno
    END
    ELSE
    BEGIN
        INSERT INTO misc (recno, miscno, mtext)
		SELECT main.record_id AS recno, 8 AS miscno, tempADUser.company
		FROM tempADUser 
		INNER JOIN main ON main.telno = tempADUser.ipPhone
		WHERE tempADUser.ipPhone IS NOT NULL;
    END
END
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/185048-hämta-och-uppdatera-värden-samtidigt
