2 messaggi dal 04 giugno 2007
Salve,
volevo sapere, cortesemente, se l'istruzione sql sotto riportata è giusta. in pratica devo assegnare al campo C1 (tabella T1) il valore "2" nei record in cui il campo D4 è uguale a "44" MA ANCHE E SOLO se il valore del campo C2 (tabella 1) è uguale a quello del campo C3 della tabella T2 e che abbia il valore del campo C4 uguale a "44")

UPDATE T1
SET C1 = 2
WHERE D4 = 44 AND C2 IN ( SELECT C3
FROM T2
WHERE C4 = 44)

grazie , immensamente, per l'aiuto
salve,
miruss2 wrote:
Salve,
volevo sapere, cortesemente, se l'istruzione sql sotto riportata è giusta. in pratica devo assegnare al campo C1 (tabella T1) il valore "2" nei record in cui il campo D4 è uguale a "44" MA ANCHE E SOLO se il valore del campo C2 (tabella 1) è uguale a quello del campo C3 della tabella T2 e che abbia il valore del campo C4 uguale a "44")
UPDATE T1
SET C1 = 2
WHERE D4 = 44 AND C2 IN ( SELECT C3
FROM T2
WHERE C4 = 44)

grazie , immensamente, per l'aiuto

se ho compreso, potresti scrivere
SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.t1 (
Id int,
c1 int,
c2 int,
d4 int
);
CREATE TABLE dbo.t2 (
Id int,
c3 int,
c4 int
);
GO
INSERT INTO dbo.t2 VALUES ( 1, 1, 0 ); --no
INSERT INTO dbo.t2 VALUES ( 2, 2, 44 ); --si
INSERT INTO dbo.t2 VALUES ( 3, 3, 44 ); --si

INSERT INTO dbo.t1 VALUES ( 1, 0, 0, 0 ); --no
INSERT INTO dbo.t1 VALUES ( 2, 0, 1, 44 ); --no
INSERT INTO dbo.t1 VALUES ( 3, 0, 2, 0 ); --no
INSERT INTO dbo.t1 VALUES ( 4, 0, 2, 44 ); --si
INSERT INTO dbo.t1 VALUES ( 5, 0, 3, 44 ); --si
INSERT INTO dbo.t1 VALUES ( 6, 0, 3, 44 ); --si
GO
SELECT * FROM dbo.t1;

UPDATE dbo.t1
SET c1 = 2
FROM dbo.t1 t1
JOIN dbo.t2 t2
ON t1.c2 = t2.c3
AND ( t1.d4 = 44 AND t2.c4 = 44);

SELECT * FROM dbo.t1;
GO
DROP TABLE dbo.t1, dbo.t2;
--<-------
Id c1 c2 d4
---------
---------
---------
-----------
1 0 0 0
2 0 1 44
3 0 2 0
4 0 2 44
5 0 3 44
6 0 3 44

Id c1 c2 d4
---------
---------
---------
-----------
1 0 0 0
2 0 1 44
3 0 2 0
4 2 2 44
5 2 3 44
6 2 3 44

dove l'estensione FROM dell'istruzione UPDATE ti consente di ritornare (per l'esecuzione dell'aggiornamento) il solo set di dati giustificato nella join a te interessante, cioe' {ON t1.c2 = t2.c3 AND ( t1.d4 = 44 AND t2.c4 = 44)}
saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de

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.
In primo piano

I più letti di oggi

Media
In evidenza
MISC