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

    Help su query MySql....

    Ciao a tutti,
    avrei bisogno di un piccolo aiuto per una query.
    Ho una tabella che contiene i seguenti dati:
    DESC DATA ID
    A 28/09/19 1
    B 28/09/19 1
    C 30/09/19 1
    C 06/10/19 2
    D 06/10/19 1
    A 08/10/19 2
    B 20/10/19 2
    C 22/10/19 3
    E 22/10/19 1
    F 26/10/19 1
    F 26/10/19 3
    A 30/10/19 4
    C 31/10/19 1
    A 02/10/19 1
    B 02/10/19 1
    D 04/10/19 1

    Quindi, la tabella a cui diamo il nome di "pippo" contiene degli oggetti (ABCDEF...) che sono stati assegnati in una certa data a delle persone riconosciute da un determinato ID.
    Mi servirebbe una query tipo questa:
    codice:
    SELECT * FROM pippo WHERE id = 1 ORDER BY data
    Fin qui tutto ok, solo che vorrei che la query estraesse solo gli oggetti con data più recente eliminando eventuali duplicati.
    In poche parole ho bisogno della lista degli ultimi oggetti consegnati tralasciando quelli uguali consegnati in precedenza.
    Ho provato un po' tutto quello che conosco di MySql, però non sono ancora arrivato ad una soluzione.
    Potreste darmi un piccolo aiuto?
    Grazie.
    Stefanoxjx

  2. #2
    devi usare le funzioni di aggregazione, quindi GROUP BY() - per indicare per quali colonne vuoi raggruppare - e, nel tuo caso, MAX(), visto che vuoi avere la data più alta

    qui https://www.mysqltutorial.org/mysql-group-by.aspx/ uno dei tanti tutorial che trovi in rete

    fa' qualche prova e facci sapere

  3. #3
    Ci sono riuscito, grazie delle dritte
    Alla fine mi è risultata una query come questa:
    codice:
    SELECT desc, MAX(data) FROM pippo WHERE id=2 GROUP BY desc
    Fa esattamente quello che mi serve
    Grazie ancora.
    Stefanoxjx

  4. #4

  5. #5
    Ops, sono ancora qui!
    Ho scoperto che la query non fa proprio quello che mi serve
    Quindi, ricapitolando, ho 2 tabelle composte in questo modo:
    Tabella "Elenco"
    ID DESCRIZIONE
    49 A
    50 B

    Tabella "Valutazione"
    ID Ext_Id Elenco_Id Valutazione Data
    1 1 49 4 2020-11-30
    2 1 49 5 2020-12-12
    3 2 50 4 2020-12-12
    4 2 50 2 2020-12-28

    Avrei bisogno di estrarre da queste tabelle il record con data più recente e da qui nasce la mia query:
    codice:
    SELECT Elenco.Descrizione, Elenco.Id, MAX(valutazione.Data), Valutazione.Valutazione, Valutazione.Id FROM Elenco
    JOIN Valutazione ON Valutazione.Elenco_Id = Elenco.Id WHERE Valutazione.Ext_Id = 2 GROUP BY elenco.Descrizione
    Dalla query sopra mi aspetterei un risultato come questo:
    ID Ext_Id Elenco_Id Valutazione Data
    4 2 50 2 2020-12-28

    e invece mi trovo con il seguente risultato:
    ID Ext_Id Elenco_Id Valutazione Data
    4 2 50 4 2020-12-28

    Praticamente è il campo "Valutazione" che non torna e in tutte le prove che ho fatto non sono riuscito ad avere un risultato che mi soddisfi.
    Avete qualche dritta da darmi?
    Grazie.

    Stefano
    Stefanoxjx

  6. #6

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 © 2021 vBulletin Solutions, Inc. All rights reserved.