Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    GROUP BY non riesco a capirla...

    Ciao a tutti,
    sto utilizzando MariaDB, ma poco centra con il mio problema
    Il problema sta su GROUP BY, credevo di averne capito il funzionamento, ma in realtà continuo ad avere un comportamento non voluto e a mio avviso inspiegabile.

    Ho una tabella con i seguenti dati:
    Id Val DataIn DataOut
    1 25 2019-02-09 NULL
    2 25 2020-01-09 NULL
    3 239 2019-10-06 NULL
    4 239 2020-06-10 2021-05-28
    5 67 2021-07-26 NULL
    6 67 2018-02-20 NULL
    7 25 2021-07-26 NULL

    A questo punto vorrei estrarre tutti i record con MAX(DataIn), e con la query che ho scritto funziona ma...
    codice HTML:
    SELECT id, val, MAX(DataIn) FROM test GROUP BY val
    ...mi ritrovo con DataIn e Val corretti, ma Id sbagliato:
    Id Val MAX(DataIn)
    1 25 2021-07-26
    5 67 2021-07-26
    3 239 2020-06-10


    Non capisco il senso di questo risultato.
    Se è stata estratta correttamente la data massima e il relativo valore Val, perchè devo trovarmi con Id 1,5,3 e non 7, 5, 4?
    Cosa mi sta sfuggendo?
    E' ovvio che avere un risultato di questo tipo porta solo a problemi quando è ora di effettuare un JOIN con altre tabelle.
    Vi ringrazio anticipatamente per l'aiuto.
    Stefanoxjx

  2. #2
    capita perché mySQL non è così stringente con la GROUP BY; M$SQL per esempio ti darebbe errore, visto che ID non è aggregato (come è max(DataIn) ) né è nella GROUP BY (come Val).

    nel tuo caso devi usare una join/sub-query più o meno così

    codice:
    SELECT 
    	t1.id, t2.val, t2.DataIn 
    FROM 
    	test t1 INNER JOIN
    	(SELECT	val, MAX(DataIn) AS DataIn FROM test GROUP BY val) t2
    	ON t1.val=t2.val AND t1.DataIn=t2.DataIn

  3. #3
    Grazie infinite per il chiarimento.
    Mi aspettavo qualcosa di più automatizzato , ma se diversamente non si può fare...

    Grazie ancora.
    Stefanoxjx

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.