Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    SELECT su un unico campo in MYSQL

    MySQL 5.0

    Ho una tabella che potrebbe avere i seguenti valori:

    Tipo, Valore, Data

    riga1: 1, 5, 12/07/2008
    riga2: 3, 7, 12/07/2007
    riga3: 1, 8, 14/08/2008

    Se faccio un DISTINCT così:

    SELECT DISTINCT Tipo,Valore FROM Tabella ORDER BY Data DESC

    ottengo

    1,5
    3,7
    1,8

    Invece io vorrei ottenere un solo elemento per tipo (con data più recente) ovvero

    3,7
    1,8

    Come posso fare???

    Grazie

  2. #2
    Moderatore di Altri Server + Database L'avatar di SUPERMIKY
    Registrato dal
    Jun 2001
    Messaggi
    1,706
    sposto nella sezione appropriata...
    vCard | CV | Social networks
    No, in privato non ti aiuto.

  3. #3
    Ciao,
    beh mysql non la ordina per data perchè la tua data non è forma corretta (per mysql!)
    http://dev.mysql.com/doc/refman/5.0/en/datetime.html
    Se tu mettessi la data yyyy-mm-dd credo che verrebbe ordinata correttamente.
    Poi per recupararla da php basterebbe:
    Codice PHP:
    $data explode('-'$data);
    $data array_reverse($data);
    $data implode('/'$data); 

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    forse non mi sono spiegato... nel database la forma della data è corretta ed il problema non è l'ordinamento che funziona.
    Il problema è riuscire ad ottenere un DISTINCT del solo Tipo vedendo una volta tutti i valori.

  5. #5
    improvviso

    codice:
    SELECT Tabella.* FROM (SELECT DISTINCT Tipo FROM Tabella) AS Q1
    LEFT JOIN Tabella ON Q1.Tipo = Tabella.tipo
    edit: mah... dubito che funzioni

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    peccato...

    così restituisce tutti i valori...

  7. #7
    mi sa che non e' possibile

    devi fare due query, nella prima ti trovi gli elementi unici, e poi fai un ciclo while dove per ogni elemento cerchi quello con data minore.

    Non mi viene in mente altro ma ci penso

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Una soluzione l'ho trovata anche io ma sempre facendo 2 query.
    Al momento funziona però devo scorrere il database con il collegamento aperto, mentre se avessi utilizzato una query unica riuscivo a mettere in un dataset.

    Se qualcuno, anche con calma, riesce a risolvere queste problemino...

    grazie

  9. #9
    Non ho sottomano un DB su cui poter fare delle prove.

    Per cui vado a tentoni. Qualcosa del genere?

    codice:
    SELECT Tabella.* FROM (SELECT MAX(data) AS maxdata, Tipo FROM Tabella GROUP BY Tipo) AS Q1
    Where Q1.Tipo = Tabella.tipo AND Q1.maxdata = Tabella.Data

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Mi restituisce questo errore anche se la tabella esiste.

    [MySQL][ODBC 3.51 Driver][mysqld-5.0.27-community-nt]Unknown column Tabella.Data' in 'where clause'

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