Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 39
  1. #11
    perfetto... grazie a tutti ancora
    www.gext.it

  2. #12
    ragazzi altro problemino con mysql...

    premetto che in locale ho la versione 5.* e sull'hosting la 4.*

    ecco la query incriminata (è la stessa di ieri un po' piu corposa)


    SELECT t.*, UNIX_TIMESTAMP(MAX(p.d)) AS last_post, UNIX_TIMESTAMP(tr.d) AS last_read, UNIX_TIMESTAMP(t.d) AS timestamp, COUNT(p.id) AS count, u.username AS username
    FROM topic AS t
    LEFT JOIN post AS p ON t.id = p.id_topic
    INNER JOIN user AS u ON u.id = t.id_user
    LEFT JOIN (SELECT * FROM topic_read WHERE id_user=1) AS tr ON t.id = tr.id_topic
    WHERE t.id_section = 6
    GROUP BY p.id
    ORDER BY t.sticky DESC, MAX(p.d) DESC


    in remoto mi da questo errore Invalid use of group function

    googlando ho trovato che scaturisce dal fatto che mancano clausola group by in quanto uso funzioni di aggregazione ma onestamente non capisco il perchè... (tantè che sul 5 funziona tutto...)

    qualcuno mi da una manina??

  3. #13
    hai scritto:

    ORDER BY t.sticky DESC, MAX(p.d) DESC

    non è ke volevi scrivere MAX(p.id) anziché p.d ?

  4. #14
    Anche qui:
    UNIX_TIMESTAMP(MAX(p.d))

    MAX(p.id) al posto di MAX(p.d)

  5. #15
    tranquillo "d" come nome di campo è una mia naming convention per i campi date (che hanno un nome riservato per mysql appunto DATE)

  6. #16
    Il problema allora è ke se usi la clausola GROUP BY sulla colonna id, allora puoi usare solo funzioni di aggregazione (nel tuo caso MAX) solo sulla colona id oggetto del GROUP BY ecco perché ti da errore, allora.

  7. #17
    A meno ke, se non ricordo male, la colonna su cui esegui MAX() non sia indicizzata.
    Quindi puoi usare MAX(UNIX.........(p.d) solo se hai creato un indice su d
    Però vedi di fare un controllo su questa cosa perché non ne sono sicuro al 100%

  8. #18
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    max si può usare sempre indipendentemente dagli indici, ovviamente ci deve essere una group by ma non deve essere nell'elenco dei campi di group by.

  9. #19
    Non ho detto quello ho detto che se usi GROUP BY su una colonna allora MAX lo puoi usare solo su quella colonna oppure su un'altra indicizzata.
    E' ovvio che se non usi GROUP BY allora puoi usarlo su qualsiasi colonna.

    Poi se sbaglio dimmi pure.

  10. #20
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    gli indici non c'entrano una m...a!
    semplicemente fare la max su un campo elencato in group by è scorretto oltre che inutile
    probabilmente il problema della query precedente è che usa un campo di group by di una tabella in left join ... non ne sono certo ... non ho provato..

    ps se non usi group by a cosa serve la max?

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