Povia e il concerto annullato: ‘etichettato come cantante di destra’
Musica: il cantante Povia polemico con l’estremizzazione: ‘il mio concerto è stato annullato, perchè etichettato come cantante di destra’ Il ...
Musica: il cantante Povia polemico con l’estremizzazione: ‘il mio concerto è stato annullato, perchè etichettato come cantante di destra’ Il ...
Un sondaggio ha evidenziato ancora una volta, quello che purtroppo già da qualche anno era venuto alla luce: La Gen ...
Un ritrovamento ha scosso il mondo dell’archeologia: scoperto il segreto della ‘Mummia urlante’ Nel 1935, una spedizione archeologica a Deir ...
Il caffè può essere un alleato quotidiano per il benessere fisico dell’intestino, selezionando i batteri buoni del microbiota, ma come? ...
Carceri, il trend è allucinante. dal 2014 a oggi sono stati oltre 600 i suicidi e si rischia un triste ...
Dalla paralisi all’infarto, cosa rischi se ti colpisce un fulmine In Italia, la stagione estiva porta con sé non solo ...
Capita spesso di dover fare una UPDATE su una tabella SQL in cui vengano coinvolte delle aggregazioni. L’altro giorno dovevo fare un UPDATE su una tabella ed inserire il COUNT delle righe di un altra SELECT su una altra tabella. La prima cosa prova è stata nel scrivere la mia query in questo modo:
UPDATE Tabella1
SET Tabella1.Campo2 = Count (*)
FROM Tabella1 INNER JOIN Tabella2 ON Tabella1.Campo1 = Tabella2.Campo1
WHERE <condizione>
Eseguendo questa query SQL restituisce un errore di questo genere: Non si può visualizzare un’aggregazione nell’elenco impostato di un’istruzione UPDATE. Cioè SLQ server non accetta le aggregazioni su una istruzione di UPDATE. A questo punto mi sono messo a cercare una soluzione al mio problema. La soluzione è questa:
UPDATE Tabella1
SET Tabella1.Campo2 = Temp.Contatore
FROM Tabella1 INNER JOIN
(
SELECT COUNT (*) AS Contatore, Tabella2.Campo1
FROM Tabella2
WHERE <condizione>
) AS Temp
ON Tabella1.Campo1 = Temp.Campo1
Allora il trucco sta nel appoggiarsi ad una tabella temporanea che si crea da una select sulla tabella su cui dobbiamo fare il COUNT. Sulla SELECT interna dove andiamo a fare il COUNT, bisogna restituire tutti i valori su cui andiamo a fare il JOIN poi sotto con la nostra tabella principale.
Dato che la mia condizione di join in questo caso prevedeva soltanto una condizione (Tabella1.Campo1 = Temp.Campo1) allora io sulla select interna oltre al contatore che mi serve sul SET ho fatto restituire anche il campo Tabella2.Campo1 per fare il JOIN.
Spero che questa cosa vi torni utile come è tornata a me.
© 2024 G Tech Group S.R.L.S. – Via di Gagia 22, 38086 Giustino (TN) – P.IVA 02743570224 – REA TN – 246638 – SDI SZLUBAI -PEC gtechgroupsrls@postacert.eu