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!