Aggiornare i dati di due tabelle con Update

di il
2 risposte

Aggiornare i dati di due tabelle con Update

Ho due tabelle.

Tabella A (IDA, Nome, QP)
Valori di A ( 1, alfa, 100), (2, beta, 100), (3, delta, 100), (4, gamma, 100)

Tabella B (IDB, QV, FK_IDA)
Valori di B ( 1, 10, 1), ( 2, 10, 2), ( 3, 10, 2), ( 4, 10, 3), ( 5, 10, 4)

Come si vede il codice 2 di beta compare due volte nella tabella di B.

Voglio aggiornare i dati QP della tabella A, riducendo il suo valore con i dati QV della tabella B.
Nella chiave esterna FK_IDA ci sono questi valori (1, 2, 2, 3, 4).

Ho usato questo codice:

UPDATE
	P
SET QP = QP - QV
FROM [Tabella A] AS P INNER JOIN [Tabella B] AS O ON P.IDA = O.FK_IDA
WHERE O.FK_IDA = P.IDA;
ma succede che il valore di beta invece di diminuire di 20, diminuisce solo di 10.

Lo stesso succede usando quest'altro codice:

MERGE INTO [Tabella A] AS P
USING 
(
	SELECT QV, FK_IDA
	FROM [Tabella B] 
	GROUP BY QV, FK_IDA
) AS O
	ON P.IDA = O.FK_IDA 
WHEN MATCHED THEN
	UPDATE SET
		P.QP = P.QP - O.QV;
Perché ?

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte