Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Order by con Group by

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654

    Order by con Group by

    Devo raggruppare i docenti (in modo che vengano presi una volta), però prendendo la data più recente in cui compaiono. Però mi dà un errore di sintassi in questa query

    Codice PHP:
    $q "SELECT * FROM Accesso_voti WHERE Docente_cognome='$cognome' AND Docente_nome='$nome' ORDER BY Data_accesso GROUP BY Docente_cognome, Docente_nome"

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    Allora, non sono certo si possa mettere 2 campi nel group by... se si puo' fare questo dovrebbe andare...

    codice:
    select Docente_cognome,Docente_nome,max(Data_accesso) as data FROM Accesso_voti WHERE Docente_cognome='$cognome' AND Docente_nome='$nome' GROUP BY Docente_cognome, Docente_nome
    Se non si puo' mettere il doppio campo nel group by... dovresti usare un campo tipo iddocente.... che identifichi univocamente il docente....



    Edit:
    Ho controllato, dovresti poterlo mettere il doppio campo nel group by, quindi la query postata dovrebbe essere corretta
    No pvt per sollecitare risposte, grazie.

  3. #3
    l'ordine delle istruzione dell'enunciato SELECT sono:

    codice:
    SELECT
        [ALL | DISTINCT | DISTINCTROW ]
          [HIGH_PRIORITY]
          [STRAIGHT_JOIN]
          [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
          [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
        select_expr, ...
        [FROM table_references
        [WHERE where_condition]
        [GROUP BY {col_name | expr | position}
          [ASC | DESC], ... [WITH ROLLUP]]
        [HAVING where_condition]
        [ORDER BY {col_name | expr | position}
          [ASC | DESC], ...]
        [LIMIT {[offset,] row_count | row_count OFFSET offset}]
        [PROCEDURE procedure_name(argument_list)]
        [INTO OUTFILE 'file_name' export_options
          | INTO DUMPFILE 'file_name']
        [FOR UPDATE | LOCK IN SHARE MODE]]

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Ho capito il procedimento e se lo applico non mi dà più errore di sintassi... Però evidentemente c'è un errore di concetto nel mio codice, perchè non li ordina per data. Ci sono alcuni while internati, quindi è probabile che stia lì l'errore.

    In pratica devo prendere una sola volta i docenti, estrarre la loro data più recente. Tra tutte le date estratte in questo modo, devo ordinarle in modo da visualizzare il docente più recente.

    In uno schema semplificato, questo è il mio codice:

    Codice PHP:
    //Estraggo i docenti, raggruppandoli in modo che non si ripetano, e li ordino per data
    //Il limite serve per suddividere i record in più pagine nella visualizzazione, ma non influisce
    $query_limit mysql_query("SELECT * FROM Accesso_voti GROUP BY Docente_cognome, Docente_nome ORDER BY Data_accesso LIMIT $primo$per_page");
    while(
    $row=mysql_fetch_assoc($query_limit)){
    //estraggo nome e cognome

      //Cerca tutte le occorrenze del docente e prende la sua data più recente
      
    $q4 "SELECT * FROM Accesso_voti WHERE Docente_cognome='$cognome' AND Docente_nome='$nome' ORDER BY Data_accesso desc limit 1";
      
    //estraggo la data 

  5. #5
    E riecco la domandina... in quale formato e' memorizzata la data? ma se raggruppi per docente selezionando la data piu' alta???

    codice:
    SELECT *, MAX(Data_accesso) as Data_accesso
    FROM Accesso_voti 
    GROUP BY Docente_cognome, Docente_nome 
    ORDER BY Data_accesso 
    LIMIT $primo, $per_page

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Perfetto, funziona alla grande
    Cmq la data era memorizzato con il formato date, tipo aaaa-mm-gg.
    Grazie a entrambi per l'aiuto

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.