Visualizzazione dei risultati da 1 a 5 su 5

Discussione: GROUP BY e ordini

  1. #1

    GROUP BY e ordini

    Piero.Mac sono disperata

    ho di nuovo un problema già affrontato qua, ma che nn ho trovato.
    Ho un'estrazione da una tabella di un elemento per categoria (classificazione fatta in un altra tabella e legata a questa con la sua chiave primaria).
    Ore per farla breve mi basta fare un bel group by ... ma restituisce sempre il primo elemento dell'ordine che gli da il group by... io vorrei che me ne restituisse uno diverso ogni volta...

    come faccio????

  2. #2
    perche' mai piero.mac? ne trovi a bizzeffe.....

    any way.... potresti usare array_rand() dopo averlo reso unico. Order by e distinct prendono il primo record che trovano in grado di soddisfare la richiesta. Non dimenticare che sono funzioni di raggruppamento e non di selezione puntata su uno specifico record.

    Si potrebbe creare una tabella temporanea popolata randomize e su questa fare la query in modo che il primo record trovato che soddisfa la richiesta di group by sia sempre diverso.

    codice:
    create temporary table temp
    select * from tabella
    where ... se hai delle condizioni per limitare i record estratti ....
    order by rand();
    
    -- ora fai la tua query usando la tabella temp al posto della tua originale
    
    select *
    from temp
    left join categorie using(id_chiave)
    group by categoria
    sono due query. se provi con phpmyadmin devi mettere entrambe le query nella stessa finestra, poiche' ISSO e' uno script php e chiude la connessione ogni volta che termina la pagina e ti fumeresti la tabella temporanea.

    Nello script fai due query a seguire.

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

  3. #3
    Grazie mille!!!
    chiedo di te perchè ti stimo.
    Sai sempre dare una risposta esauriente alle mie domande su mysql

    La query con la tabella creata al volo funziona, però
    nell'host in cui sto ora nn posso creare tabelle temporanee, ne sto creando di permanenti, ma ogni volta che faccio la query provvedo a cancellarla.
    Ho 2 moduli nella stessa pagina, che una volta caricata, richiama contemporanea la stessa query, quindi primo, se esiste di già cancello la tabella permanente, poi la ricreo per 2 volte nello stesso momento.
    Funziona tutto .... ma nn capisco come faccia a gestirsi la cosa.
    MAnderà in crisi il db?

  4. #4
    fai una tabella fissa di appoggio e la svuoti prima di popolarla con TRUNCATE table. senza fare il drop table.

    truncate table randomize

    insert into table randomize
    select * ecc...

    select ecc...

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

  5. #5
    perfetto



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