Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Update su tabella in join con se stessa

159 views
Skip to first unread message

Albe V°

unread,
Nov 20, 2009, 9:53:59 AM11/20/09
to
Sql2005:

USE TEMPDB

CREATE TABLE DBO.TABELLA
(
ID_F INT PRIMARY KEY
, ID_P INT NULL FOREIGN KEY REFERENCES DBO.TABELLA (ID_F)
, VALORE INT
)

INSERT INTO DBO.TABELLA (ID_F, ID_P, VALORE)
VALUES (1, NULL, 123)
INSERT INTO DBO.TABELLA (ID_F, ID_P, VALORE)
VALUES (2, NULL, 345)
INSERT INTO DBO.TABELLA (ID_F, ID_P, VALORE)
VALUES (3, 1, 999)

SELECT *
FROM DBO.TABELLA


UPDATE DBO.TABELLA
SET
VALORE = COALESCE(F.VALORE, P.VALORE)
FROM DBO.TABELLA AS F
LEFT OUTER JOIN DBO.TABELLA AS P
ON F.ID_P = P.ID_F

SELECT *
FROM DBO.TABELLA


DROP TABLE DBO.TABELLA

Questa cosa genera errore a causa dell'ambiguitᅵ nel Update.

Ho provvisoriamente risolto modificando (ma non mi piace neanche un
po') in:
UPDATE DBO.TABELLA
SET
VALORE = COALESCE(F.VALORE, P.VALORE)
FROM DBO.TABELLA AS F
LEFT OUTER JOIN (SELECT * FROM DBO.TABELLA) AS P
ON F.ID_P = P.ID_F


Qual'ᅵ la via 'pulita' per una cosa del genere?

Alberto


Zulu

unread,
Nov 20, 2009, 10:15:02 AM11/20/09
to
"Albe Vᅵ" ha scritto nel messaggio news:he6aii$7pq$1...@tdi.cu.mi.it...

>
> Qual'ᅵ la via 'pulita' per una cosa del genere?
>

Ai ai ai, la punta sds 10x1000 ti ha rovinato i neuroni, ormai sei un
tossico... :-DDD

UPDATE F

Albe V°

unread,
Nov 20, 2009, 10:20:33 AM11/20/09
to
Il 20/11/2009, Zulu ha detto :

> "Albe Vᅵ" ha scritto nel messaggio news:he6aii$7pq$1...@tdi.cu.mi.it...
>
>>
>> Qual'ᅵ la via 'pulita' per una cosa del genere?
>>
>
> Ai ai ai, la punta sds 10x1000 ti ha rovinato i neuroni, ormai sei un
> tossico... :-DDD

Ho giᅵ detto a tutti che appena mi arriva mi presento con la punta in
ufficio...

> UPDATE F
> SET
> VALORE = COALESCE(F.VALORE, P.VALORE)
> FROM DBO.TABELLA AS F
> LEFT OUTER JOIN DBO.TABELLA AS P
> ON F.ID_P = P.ID_F

Avevo provato
UPDATE DBO.TABELLA AS F

ma non funzionava...
Perᅵ c'ero vicino...

Grazie.

Ciao

Alberto


0 new messages