Visualizzazione dei risultati da 1 a 5 su 5

Discussione: eliminare record doppi

  1. #1

    eliminare record doppi

    Gentile team,
    ho la necessità di bonificare una tabella da record doppi

    la tabella_codici è composta dai campi id | data | codice | utente

    e dovrei eliminare tutti i record duplicati ordinati per codice e data,
    in realtà mi trovo diversi record che hanno per esempio

    codice=3 e data=12-05-2015
    codice=3 e data=12-05-2015
    codice=3 e data=12-05-2015
    codice=3 e data=12-05-2015

    e dovrei lasciarlo una sola volta nella tabella

    speranzoso di essermi spiegato vi ringrazio per il tempo che vogliate dedicarmi.

    grazie mille
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  2. #2
    Quote Originariamente inviata da Stanislao Visualizza il messaggio
    speranzoso di essermi spiegato...
    In realtà non ti sei spiegato bene o, perlomeno, la tua spiegazione lascia dei dubbi.
    Per record duplicato si intendono due o più record che hanno esattamente gli stessi dati in tutte le colonne, mentre nel tuo caso non è chiaro se i valori duplicati siano solo quelli presenti nei campi codice e data.
    Se così fosse il fatto che gli altri campi contengano valori differenti potrebbe significare qualcosa di ben preciso.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    si scusate
    in pratica hanno esattamente gli stessi valori in tutti i campi e sono replicati anche N volte
    grazie
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  4. #4
    ho risolto così:
    codice:
    $query2 = "SELECT CONCAT(protocollo_op,tipo_op,data_op,Importo_op) as doppioni, COUNT(*) AS tot FROM report_esiti GROUP BY CONCAT(protocollo_op,tipo_op,data_op,Importo_op) ORDER BY tot";
    
    
    $results = mysql_query($query2) OR die(mysql_error());
    
    
    while ($row = mysql_fetch_assoc($results)) {
    
    
    if($row['tot'] > 1)  {   $limit = $row['tot'] - 1;
            $query2="DELETE FROM report_esiti WHERE CONCAT(protocollo_op,tipo_op,data_op,Importo_op) = '$row[doppioni]' LIMIT $limit";
    
    
            $cancellato=mysql_query($query2) OR die(mysql_error());
            echo "record $row[doppioni] - Cancellati n. $cancellato";
        }}  // while
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Ciao,
    valuta anche di considerare come "unico" la somma delle due colonne in modo che nella tabella, in futuro, il problema non si possa ripetere!

    In MySql:
    CREATE UNIQUE INDEX nome_chiave ON nome_tabella(nome_colonna1, nome_colonna2);

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.