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
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;
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
256 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e