Query di update

martedì 24 giugno 2008 - 12.02

bluland Profilo | Guru

salve,
uso SQL 2000 srv
ho la seguente tabella di esempio

CREATE TABLE [PN1] (
[SE] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[P2] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [PN2] (
[P1] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO

INSERT INTO PN1(SE, P2) VALUES
('SM53A','02HAT00332AAF')
INSERT INTO PN1(SE, P2) VALUES
('SM53A','02HAT00332AAa')
INSERT INTO PN1(SE, P2) VALUES
('CA44AI','02HAT00135AAP')
INSERT INTO PN1(SE, P2) VALUES
('SP03SG','03HGC00057AAR')
INSERT INTO PN1(SE, P2) VALUES
('SK25SQ','03HGC00064AAA')

INSERT INTO PN2(P1) VALUES
('SM53A')
INSERT INTO PN2(P1) VALUES
('CA44AI')
INSERT INTO PN2(P1) VALUES
('SP03SG')
INSERT INTO PN2(P1) VALUES
('SK25SQ')

SELECT * FROM PN1
SELECT * FROM PN2

/*

SE P2
------------- -----------------
SM53A 02HAT00332AAF
SM53A 02HAT00332AAa
CA44AI 02HAT00135AAP
SP03SG 03HGC00057AAR
SK25SQ 03HGC00064AAA

(5 row(s) affected)

P1
-------------
SM53A
CA44AI
SP03SG
SK25SQ

(4 row(s) affected)
*/

1. ecco cosa dovrei fare
Update di PN2.P1 con PN1.P2
dove PN1.SE = PN2.P1 e dove PN1.SE ha solo 1 record
in pratica il risultato dovrebbe essere questo dopo l'update:

P1
-------------
SM53A
02HAT00135AAP
03HGC00057AAR
03HGC00064AAA

idee?

saluti
--------------------
Vincenzo PESANTE
System Engineer

lbenaglia Profilo | Guru

>1. ecco cosa dovrei fare
>Update di PN2.P1 con PN1.P2
>dove PN1.SE = PN2.P1 e dove PN1.SE ha solo 1 record
>in pratica il risultato dovrebbe essere questo dopo l'update:
>
>P1
>-------------
>SM53A
>02HAT00135AAP
>03HGC00057AAR
>03HGC00064AAA
>
>idee?

Ciao Vincenzo,

puoi utilizzare un comando di UPDATE simile a questo:

UPDATE T2 SET T2.P1 = T1.P2 FROM ( SELECT SE, MAX(P2) AS P2 FROM dbo.PN1 GROUP BY SE HAVING COUNT(*) = 1 ) AS T1 JOIN dbo.PN2 AS T2 ON T1.SE = T2.P1; SELECT * FROM dbo.PN2; /* Output: --------------- SM53A 02HAT00135AAP 03HGC00057AAR 03HGC00064AAA (4 row(s) affected) */

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bluland Profilo | Guru

Si grazie funziona!


Ciao
--------------------
Vincenzo PESANTE
System Engineer
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5