Ciao a tutti, premesso che sono un novizio con MySQL, cerco di semplificare il più possibile il mio problema:
Tabella.DB
Desiderata
Risultato ottenuto con la query sottostante:
SELECT
if (campo2 IS NULL, campo1, campo2) AS Padre,
Campo2 AS Figlio,
Data,
CodiceGestione
FROM
tabella.DB
GROUP BY
Padre
HAVING
MAX(Data)
Mi sarei aspettato che il group by avesse funzionato con l'alias, ma evidentemente fa logica su campo1 e campo2 e non sull'alias.
Se ho ben capito il group by funziona se l'alias assume il valore di un singolo campo, ma se invece assume alternativamente il valore di due campi occorrono altre soluzioni.
Immagino che il raggruppamento funzionerebbe se, al posto dell'alias, creassi un ulteriore campo virtuale che assume il valore di campo 1 e 2 a seconda della condizione impostata nell'IF, ma non riesco a capire come fare.
Spero di esser stato chiaro e vi ringrazio in anticipo
Tabella.DB
Campo1 | Campo2 | Data | CodiceGestione |
ABC-123 | 17/02/2021 | ||
DEF-456 | ABC-123 | 18/02/2021 | Codice X |
GHI-678 | LMN-901 | 16/02/2021 | Codice Y |
LMN-901 | 15/02/2021 |
Desiderata
Padre | Figlio | Data | Codice Gestione |
ABC-123 | DEF-456 | 18/02/2021 | Codice X |
GHI-678 | LMN-901 | 16/02/2021 | Codice Y |
Risultato ottenuto con la query sottostante:
Padre | Figlio | Data | Codice Gestione |
ABC-123 | 17/02/2021 | ||
LMN-901 | 15/02/2021 |
SELECT
if (campo2 IS NULL, campo1, campo2) AS Padre,
Campo2 AS Figlio,
Data,
CodiceGestione
FROM
tabella.DB
GROUP BY
Padre
HAVING
MAX(Data)
Mi sarei aspettato che il group by avesse funzionato con l'alias, ma evidentemente fa logica su campo1 e campo2 e non sull'alias.
Se ho ben capito il group by funziona se l'alias assume il valore di un singolo campo, ma se invece assume alternativamente il valore di due campi occorrono altre soluzioni.
Immagino che il raggruppamento funzionerebbe se, al posto dell'alias, creassi un ulteriore campo virtuale che assume il valore di campo 1 e 2 a seconda della condizione impostata nell'IF, ma non riesco a capire come fare.
Spero di esser stato chiaro e vi ringrazio in anticipo