Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: Query group by in sql

  1. #1

    Query group by in sql

    Ho un problema con un db con questa struttura:


    ID | ORDINE | RIGA | COMMENTO

    e per esempio i dati sono:

    1 | 1 | 1 | commento 1
    2 | 1 | 2 | commento 2
    3 | 1 | 3 | commento 3
    4 | 1 | 2 | commento 4
    5 | 2 | 1 | commento 5

    Io voglio estrapolare tutti gli ordini con ORDINE=1 che abbiano il massimo id per ogni riga, ovvero:

    1 | 1 | 1 | commento 1
    4 | 1 | 2 | commento 4
    3 | 1 | 3 | commento 3

    Ho provato con qualcosa tipo:
    SELECT `id`,`ordine`,`riga` FROM `msg` WHERE id_ordine=1 GROUP BY (MAX(nro_riga))

    Ma niente....soluzioni ?
    www.fulleffect.it
    Il miglior sito hip hop in Italia.

    FAIEL aka Raffaele Madaro
    FORZA BARI !!

  2. #2
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Quello che chiedi non ha senso.
    Perchè non l'id 2 ma il 4? cosa li distingue queste due righe?
    I got the remedy

  3. #3
    Tralasciando il senso (non ti spiego a cosa serva), la differenza fra l' ID 2 ed il 4 è il campo COMMENTO.
    In pratica io voglio un ordinamento dei records per numero di riga crescente, e nel caso in cui per un dato valore di riga ci siano doppioni, voglio il records con id maggiore.
    Spero ora di aver chiarito, grazie.
    www.fulleffect.it
    Il miglior sito hip hop in Italia.

    FAIEL aka Raffaele Madaro
    FORZA BARI !!

  4. #4
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    dovrebbe bastare questo:

    SELECT MAX(ID) FROM msg
    GROUP BY ORDINE,RIGA
    HAVING ORDINE = 1
    I got the remedy

  5. #5
    No, seguivo la discussione di la e lui vuole estrarre tutti i campi della tabella dove ordine = 1 e in caso di doppioni su 'riga' visualizzare solo la riga con 'riga' maggiore.
    Ciao!

  6. #6
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da fmortara
    No, seguivo la discussione di la..
    di la dove?

    Originariamente inviato da fmortara
    e lui vuole estrarre tutti i campi della tabella dove ordine = 1 e in caso di doppioni su 'riga' visualizzare solo la riga con 'riga' maggiore.
    Infatti la query fa quello o meglio tira fuori tutti gli id che soddisfano le condizioni da lui richieste.
    Tirare fuori tutti i campi è banale. è un compito che lascio a lui.
    ps: e se non sa farlo allora è meglio che non lo chieda perchè non glielo dico in quanto banale
    I got the remedy

  7. #7
    gli id, si, ma i valori degli altri campi li prende dalle righe che trova prima.
    l'ho testata in un mio db

    o sbaglio io qualcosa?

    a me trova:

    id, campo, campo, max(id)

    1, tretreter,ertert,34
    3,rtwesdf,ertertert,48

    ecc...

    cioè, trova i primi valori, e poi aggiunge il max id che mi aspetto...

    ho fatto select *, max(id) ecc...
    Ciao!

  8. #8
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da fmortara
    gli id, si, ma i valori degli altri campi li prende dalle righe che trova prima.
    l'ho testata in un mio db

    o sbaglio io qualcosa?

    a me trova:

    id, campo, campo, max(id)

    1, tretreter,ertert,34
    3,rtwesdf,ertertert,48

    ecc...

    cioè, trova i primi valori, e poi aggiunge il max id che mi aspetto...
    Cosa stai dicendo scusa?
    Una volta che hai gli id è semplice tirare fuori le rige complete.


    Originariamente inviato da fmortara
    ho fatto select *, max(id) ecc...
    questa non ha senso, non puoi inserire una funzione di agregazione quando c'è un asterisco...
    I got the remedy

  9. #9
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Mi hai fatto venire il dubbio e ho provato con un database in sql server
    ecco il risultato
    http://img810.imageshack.us/img810/3058/61100598.png

    a destra il rislutato della query che ho scritto anche qui.
    A sx il risultato cercato e come vedi ho utilizzato la query di destra
    I got the remedy

  10. #10
    e se aggiungi questo riga al tuo db?


    ID,ORDINE,RIGA,COMMENTO
    5, 1, 2, commento 5
    Ciao!

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.