229 messaggi dal 17 aprile 2006
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
Software Engineer
17 messaggi dal 04 ottobre 2007
ciao

prova a scrivere così.... a me funziona

UPDATE PN2 SET PN2.P1 = (SELECT PN1.P2 FROM PN1 WHERE PN2.P1 = PN1.SE)
WHERE (SELECT COUNT(*) AS conta FROM PN1 WHERE PN2.P1 = PN1.SE) = 1

P.S. ma usare nomi di tabelle e campi un pochino più significativi? è un pò un casino lavorare così... comunque speriamo di esserti stato di aiuto

Ciao
Simonexxx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.