You are currently browsing the tag archive for the ‘query’ tag.

Anche oggi parliamo di query.
Nel caso odierno abbiamo due tabelle correlate attraverso alcune chiavi e vogliamo aggiornare i campi della tabella A con i dati presenti nella tabella B.

Dobbiamo distinguere nel caso si utilizzi un database MySQL oppure un database SQL Server.

Caso MySQL

UPDATE
tabellaA
INNER JOIN
tabellaB
ON
tabellaA.campo1 = tabellaB.campo1 AND
tabellaA.campo2 = tabellaB.campo2
SET
tabellaA.campoA = tabellaB.pinco,
tabellaA.campoB = tabellaB.pallo
WHERE
tabellaB.sempronio = 25

Caso SQL Server

UPDATE
tabellaA
SET
tabellaA.campoA = tabellaB.pinco,
tabellaA.campoB = tabellaB.pallo
FROM
tabellaA
INNER JOIN
tabella B
ON
tabellaA.campo1 = tabellaB.campo1 AND
tabellaA.campo2 = tabellaB.campo2
WHERE
tabellaB.sempronio = 25

Ovviamente le condizioni WHERE utilizzate in questi esempi sono modificabili secondo le esigenze contingenti.

Spesso capita di dover creare delle query SQL uscendo dai classici schemi standard che troviamo nei manuali, nelle guide o nei tutorial.

Mi è capitato recentemente di dover testare le condizioni presenti in alcuni campi di una tabella di un DB MySql e tramite una SELECT dover mostrare tali risultati.

Come prima possibilità ho pensato subito di utilizzare la struttura CASE che spesso ci fornisce la possibilità di introdurre test condizionali all’interno della query.

La classica struttura CASE ad esempio è la seguente

CASE
variabile
WHEN 5 THEN ‘pippo’
WHEN 6 THEN ‘pluto’
ELSE ‘paperino’
END AS risultato

dove in questo caso confrontiamo variabile con il valore 5, il valore 6 o altro restituendo la corrispettiva stringa come risultato.

Nel mio caso dovendo confrontare alcuni campi presenti nella tabella tra loro ho optato per una struttura CASE leggermente differente ma con la massima efficacia

SELECT DISTINCT
ID,
campo1,
campo2,
campo3,
CASE true
WHEN ( (campo1 = campo2) AND (campo2 = campo3) THEN ‘condizione1’
WHEN ( (campo1 campo2) AND (campo2 = campo3) THEN ‘condizione2’
WHEN ( (campo1 = campo2) AND (campo2 campo3) THEN ‘condizione3’
ELSE ‘condizione4’
END as risultato
FROM
nometabella

Sostituendo nella struttura CASE al posto della variabile la condizione booleana true il gioco è stato semplicissimo!

Maggio: 2024
L M M G V S D
 12345
6789101112
13141516171819
20212223242526
2728293031