Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21

Discussione: Problema con GROUP BY

  1. #11
    Originariamente inviato da gigioland
    perchè fai una join in quel modo li? che rallenta non poco, non ti conviene fare select... from tabella inner join tabella as tab ?
    perché al momento è l'unico modo che ho trovato per risolvere il problema.

    Se mi riscrivi una query più semplice che faccia la stessa cosa di quella, ben venga.

  2. #12
    Non c'e' santo....

    order by e distinct prendono il primo record che fisicamente trovano in tabella che soddisfa la richiesta.

    Le strade sono due.... Dato che JOIN costruisce una tabella temp cosi' come fa un SELECT annidato .....

    Creare una tabella temporanea con order by campo2 desc e poi eseguire la query con il group by su questa, oppure con alter table modificare l'indice id in DESC ma questa e' una operazione che andra' rifatta ad ogni nuovo record inserito.

    Per compatibilita' tra le versioni uso la tab temp. Un esempio:
    codice:
    CREATE TEMPORARY TABLE temp
    SELECT * FROM table
    ORDER BY valore2 DESC;
    
    altra query a seguire:
    
    SELECT * FROM temp
    GROUP BY valore1
    ORDER BY ....

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

  3. #13
    grazie piero, ma per il sistema su cui dovrò far girare 'sta cosa preferisco la subquery annidata.

    Quindi non c'è il modo con una join semplice, senza ricorrere a tabelle temporanee o subquery?
    Mi sembra strano, perché in genere quasi qualsiasi cosa che si può fare con subquery si può rifare anche con join.

  4. #14
    Se hai una versione recente di mysql prova la seguente sintassi...
    codice:
    SELECT * 
    FROM 
    (select max(campo1) as id1 from tabella
    group by campo) as tab1
    left join tabella as tab2 ON tab1.id1 = tab2.campo1
    in teoria dovrebbe funzionare....

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

  5. #15
    up... forse il post era sfuggito a Skidx ... mi piacerebbe conoscere il risultato della query ultima proposta, sempre che tu abbia voglia di provarla.



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

  6. #16
    l'ho vista ora. Come mai left join e non inner?

    (ah, poi mi sa che hai sbagliato il max(), a me serve la data più grande, quindi campo2)

  7. #17
    Originariamente inviato da skidx
    l'ho vista ora. Come mai left join e non inner?

    (ah, poi mi sa che hai sbagliato il max(), a me serve la data più grande, quindi campo2)
    ho messo campo - campo1 tu traduci... anche la tabella non si chiamera' tabella...

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

  8. #18
    Mi ineressa conoscere se funziona ... left join perche' la prima select scandisce gia' la tabella....

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

  9. #19
    a parte il left join, cosa cambia dalla mia?
    L'ordine nella join?

    comunque provo

  10. #20
    mi sembra non funga, non completamente almeno, ci sono comunque i duplicati.

    Speravo comunque di poterci riuscire usando solo join semplici senza subquery, ma non viene come.

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.