Visualizzazione risultati 1 fino 14 di 14
Like Tree3Likes
  • 1 Post By mzanella
  • 1 Post By mzanella
  • 1 Post By mywork71ge

Discussione: Data più recente su un gruppo record sql

  1. #1
    mywork71ge non è connesso Neofita
    Data registrazione
    08-01-2021
    Messaggi
    7

    Predefinito Data più recente su un gruppo record sql

    Ciao a tutti , non riesco a risolvere il seguente problema , faccio un esempio di tabella :
    | Id | numero | codice | data |
    -------------------------------------
    | 1 | 123456 | xx xx | 16/06/2021 |
    | 2 | 033459 | xx xx | 09/06/2021 |
    | 3 | 113355 | yy yy | 11/09/2016 |
    | 4 | 224466 | yy yy | 01/02/2020 |
    | 5 | 589901 | xx xx | 06/03/2008 |

    Vorrei ricavare la data più recente per ogni codice come si vede nel risultato :
    | Id | numero | codice | data |
    -------------------------------------
    | 1 | 123456 | xx xx | 16/06/2021 |
    | 4 | 224466 | yy yy | 01/02/2020 |

    Ho provato con la funzione Max(data) e GROUP BY sul codice ma non ho ottenuto il risultato giusto, o mette un solo record con data più recente o non cambia nulla .

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Se data è di tipo stringa ti occorre una funzione stringa per trasformare in data. STR_TO_DATE(’03/10/2005′,’%d/%m/%Y’)
    ORDER BY ordina un resultset.

  3. #3
    mywork71ge non è connesso Neofita
    Data registrazione
    08-01-2021
    Messaggi
    7

    Predefinito

    Ok ... al di la della conversione cosa devo scrivere.... ?

  4. #4
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Prova
    Codice:
    SELECT * FROM table ORDER BY STR_TO_DATE('data',’%d/%m/%Y’) DESC;
    Normalmente si memorizza nel formato di default di mysql YYYY-MM-DD ma purtroppo per semplicità stai usando erroneamente stringhe. Ti occorre studiare e per molto tempo.
    Ultima modifica di darbula : 16-06-2021 alle ore 16.14.55

  5. #5
    phollia non è connesso Utente giovane
    Data registrazione
    05-02-2015
    Messaggi
    68

    Predefinito

    Codice:
    SELECT id, numero, codice, MAX(data) FROM tabella GROUP BY codice
    Vale quanto detto per la data. Se non è nel formato YYYY-MM-DD H:i:s devi convertirla.

  6. #6
    mywork71ge non è connesso Neofita
    Data registrazione
    08-01-2021
    Messaggi
    7

    Predefinito

    si può scrivere cosi ? esempio : Max(STR_TO_DATE(dt_sanz,’%d/%m/%Y’))

  7. #7
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Cambia lo schema della tabella e usa il tipo DATE per le colonne che contengono date.
    C'è un motivo se esiste il tipo DATE, no?

    Se usi un tipo stringa come VARCHAR è normale che ORDER BY effettui l'ordinamento alfabetico. Usando il tipo di dato adeguato il problema non si pone.
    mywork71ge likes this.

    I suggerimenti che do più spesso:


  8. #8
    mywork71ge non è connesso Neofita
    Data registrazione
    08-01-2021
    Messaggi
    7

    Predefinito

    Ok...pero ora mi tocca dire che sto usando visual basic 2010 express , sto caricando i dati da excel a datagridview di di vb.net, solo che usando delle istruzioni specifiche di programma il foglio elettronico mi fa da tabella , faccio vedere il codice :

    Imports System.Data.SqlClient
    Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim MyConnection As System.Data.OleDb.OleDbConnection
    Dim DtSet As System.Data.DataSet
    Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
    MyConnection = New System.Data.OleDb.OleDbConnection("provider=Micros oft.Jet.OLEDB.4.0;Data Source='c:\vb.net-informations.xls';Extended Properties=Excel 8.0;")
    MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)
    MyCommand.TableMappings.Add("Table", "Net-informations.com")
    DtSet = New System.Data.DataSet
    MyCommand.Fill(DtSet)
    DataGridView1.DataSource = DtSet.Tables(0)
    MyConnection.Close()

    End Sub
    End Class

  9. #9
    mywork71ge non è connesso Neofita
    Data registrazione
    08-01-2021
    Messaggi
    7

    Predefinito

    Ok...pero ora mi tocca dire che sto usando visual basic 2010 express , sto caricando i dati da excel a datagridview di di vb.net, solo che usando delle istruzioni specifiche di programma il foglio elettronico mi fa da tabella , faccio vedere il codice :

    Imports System.Data.SqlClient
    Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim MyConnection As System.Data.OleDb.OleDbConnection
    Dim DtSet As System.Data.DataSet
    Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
    MyConnection = New System.Data.OleDb.OleDbConnection("provider=Micros oft.Jet.OLEDB.4.0;Data Source='c:\vb.net-informations.xls';Extended Properties=Excel 8.0;")
    MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)
    MyCommand.TableMappings.Add("Table", "Net-informations.com")
    DtSet = New System.Data.DataSet
    MyCommand.Fill(DtSet)
    DataGridView1.DataSource = DtSet.Tables(0)
    MyConnection.Close()

    End Sub
    End Class

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Mai toccato una riga di Visual Basic in vita mia .
    Da quello che ho letto e capito ci sono due possibilità:
    • Visual Basic scrive in una tabella già esistente, in questo caso se dichiari il tipo della colonna in questione come DATE Visual Basic dovrebbe capire da solo in che formato scriverci dentro
    • Visual Basic crea la tabella di sua iniziativa, in questo caso dovrebbe essere possibile indicargli in qualche modo il tipo di dato da utilizzare
    mywork71ge likes this.

    I suggerimenti che do più spesso:


  11. #11
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Per la conversione in YYYY-MM-DD via vb.net (5 o superiore) https://docs.microsoft.com/it-it/dot...e?view=net-5.0
    Utilizzare ToString('yyyy-MM-dd')
    Ultima modifica di darbula : 17-06-2021 alle ore 14.32.52

  12. #12
    mywork71ge non è connesso Neofita
    Data registrazione
    08-01-2021
    Messaggi
    7

    Predefinito

    Mai toccato una riga di visual basic in vita tua?
    Non sai cosa ti perdi, c'è sempre in tempo a impararlo.

  13. #13
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Citazione Originalmente inviato da mywork71ge Visualizza messaggio
    Mai toccato una riga di visual basic in vita tua?
    Non sai cosa ti perdi, c'è sempre in tempo a impararlo.
    Credo ne farò a meno
    Visual Basic 6 e precedenti non sono mai stati linguaggi particolarmente stimati. Le cose sono cambiate in meglio con Visual Basic .NET, ma di fatto si tratta di un tentativo di avvicinarsi a C#. A quel punto meglio imparare C#, che offre anche sbocchi più interessanti, come lo sviluppo in Unity. Oppure direttamente Java, dato che C# è a sua volta un tentativo (ben riuscito) da parte di Microsoft di proporre un concorrente di Java. Per la programmazione general purpose guarderei piuttosto a linguaggi più moderni come Scala, Rust o Golang. O Python, come fanno tutti.

    Tutto dipende sempre dal contesto e dalle reali necessità, naturalmente.

    I suggerimenti che do più spesso:


  14. #14
    mywork71ge non è connesso Neofita
    Data registrazione
    08-01-2021
    Messaggi
    7

    Predefinito

    Io infatti sto usando parecchio vb.net , è molto performance con Windows 10, si interfaccia molto bene con excel, più adatto per lavori di ufficio. Comunque visual basic 6.0 lo uso ancora adesso, per certi fattori lo trovo meglio, pensa io lavoro nell'azienda trasporti urbano di Genova, alcuni programmi aziendali di medie proporzioni sono state fatte con visual basic 6.
    mzanella likes this.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •