• User Attivo

    Count - eliminare dopo record 400

    Salve a tutti, scusate il title un pò criptico, spero di riuscirmi a spiegare meglio nel thread.

    Purtroppo non sono un fenomeno, e mi trovo di fronte un problema (probabilmente facile) che non riesco a risolvere.

    In pratica ho una sorta di forum molto popolato, e ogni thread ha più di 1.000 messaggi all'interno. Quello che vorrei fare è sfoltirlo un pò, lasciando, in ogni 3D, solo gli ultimi 400 messaggi.

    Come posso fare?

    Io avevo pensato sicuramente di partire con una select e identificare tutti i 3d che hanno più di 400msg ... ma poi ?

    NB: Ho mysql 4.1.

    Grazie mille


  • Super User

    prova a fare query di questo genere:

    
    delete from tabmessaggi where id not in (select id from tabmessaggi where id_discussione = '.$idDiscussioneIndividuata.' order by id desc limit 0,400);
    
    

    chiaramente la query dovrai metterla in un ciclo che prende in esame tutte le discussioni che hanno più di 400 messaggi:

    
    select id_discussione from (select id_discussione, count(id) as numero from tabmessaggi group by id_discussione) as a where numero>400
    
    

    per ogni ciclo esegui la prima query che dovrebbe cancellare i dati.

    ATTENZIONE: ho scritto le query di getto senza provarle, stai attento ad usarle!!!


  • User Attivo

    Ciao Tymba grazie innanzitutto per la risposta.

    Purtroppo il mio mysql non supporta le subquery 😞


  • Super User

    se non puoi usare subquery trasforma il tutto in query e cicli php.

    usare le subquery è comodo ma puoi sempre trasformare il tutto (con attenzione) in cicli nidificati e memorizzare in modo temporaneo gli id che ti servono in array.

    buon divertimento.


  • User Attivo

    @Tymba said:

    se non puoi usare subquery trasforma il tutto in query e cicli php.

    usare le subquery è comodo ma puoi sempre trasformare il tutto (con attenzione) in cicli nidificati e memorizzare in modo temporaneo gli id che ti servono in array.

    buon divertimento.

    Era proprio quello che non sapevo fare 😄 😄

    Ci proverò cmq.

    Grazie :ciauz: