Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    Originariamente inviato da Fabio Heller
    Hai fatto un minestrone di tutto


    Cosa c'è di complicato nella soluzione che ti ho indicato?

    Nella tabella temporanea inserisci il risultato di
    SELECT DISTINCT * FROM tabella_con_duplicati

    se si tratta di duplicati perfetti

    altrimenti
    SELECT DISTINCT campo_chiave_duplicato FROM tabella_con_duplicati

    se il duplicato riguarda solo un campo
    Si quoto per il minestrone.....

    a partire dal group by al mysql_affected_rows in una select.... al where descritto a quel modo.

    La mia era una proposta "da laboratorio". Ti consiglio caldamente la soluzione che ti ha proposto Fabio. Pulita e semplice, e sopratutto sicura, e riutilizzabile.



    X Fabio ... ciao. senza faccine...

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

  2. #12
    Originariamente inviato da Fabio Heller
    Hai fatto un minestrone di tutto


    Cosa c'è di complicato nella soluzione che ti ho indicato?

    Nella tabella temporanea inserisci il risultato di
    SELECT DISTINCT * FROM tabella_con_duplicati

    se si tratta di duplicati perfetti

    altrimenti
    SELECT DISTINCT campo_chiave_duplicato FROM tabella_con_duplicati

    se il duplicato riguarda solo un campo

    provo...


  3. #13

    da segnarsela

    SELECT DISTINCT * FROM tabella_con_duplicati

    se si tratta di duplicati perfetti

    altrimenti
    SELECT DISTINCT campo_chiave_duplicato FROM tabella_con_duplicati
    da segnarsela...veramente utile come cosa
    Webmasterarea.it (scripts, guide ecc) Ora anche scambio banner
    Io ho fatto la mia scelta

  4. #14
    Originariamente inviato da piero.mac
    ciao. senza faccine...
    Ciao Piero :-)
    per favore NIENTE PVT TECNICI da sconosciuti

  5. #15
    Originariamente inviato da dinucciarturo

    provo...

    A puro scopo didattico e per completezza, ti posto la traduzione del tuo script seconde le indicazioni che ti avevo messo all'inizio del thread:

    codice:
    $query = "SELECT CONCAT(nome,citta,regione,tel) as doppioni, COUNT(*) AS tot
    FROM federal_hotel
    GROUP BY CONCAT(nome,citta,regione,tel)
    ORDER BY tot";
    
    $result = mysql_query($query) OR die(mysql_error());
    
    while($number= mysql_fetch_assoc($result) {
    
       if($row['tot'] > 1)  {   $limit = $row['tot'] - 1;
            $query2="DELETE FROM federal_hotel
            WHERE CONCAT(nome,citta,regione,tel) = '$row[doppioni]' LIMIT $limit";
    
            $cancellato=mysql_query($query2) OR die(mysql_error());
            echo "
    record $row[doppioni] - Cancellati n. $cancellato";
        } // while
    Con la raccomandazione di fare come detto da Fabio. non vorrei tabelle sulla coscienza.....



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

  6. #16
    Originariamente inviato da Fabio Heller
    Hai fatto un minestrone di tutto


    Cosa c'è di complicato nella soluzione che ti ho indicato?

    Nella tabella temporanea inserisci il risultato di
    SELECT DISTINCT * FROM tabella_con_duplicati

    se si tratta di duplicati perfetti

    altrimenti
    SELECT DISTINCT campo_chiave_duplicato FROM tabella_con_duplicati

    se il duplicato riguarda solo un campo
    allora:
    se faccio la prima query selezionanado tutti i campi, il risultato è esattamente il numero di record che ho!!...

    mentre se faccio la select (su 4 campi chiave)...poi come faccio a trasferire l'intera riga nell'altro db?? ho selezionato solo 4 campi mentre in totale ne ho 12!!dovo fare un'altra query che mi seleziozioni il campo da copiare??...

    grazie per la pazienza!

  7. #17
    Se ti restituisce comunque tutte le righe vuol dire che non si tratta di duplicati perfetti, ma di duplicati solo in relazione ad uno o alcuni campi.

    Allora dovresti poter fare così

    --tabella di parcheggio
    CREATE TEMPORARY TABLE myTmp AS
    SELECT DISTINCT campo1, campo2, campoX
    FROM tabella_con_duplicati

    --sintassi solo per Mysql 4 (elimina i record selezionati
    -- attraverso un JOIN)
    DELETE tabella_con_duplicati
    LEFT JOIN myTmp ON
    tabella_con_duplicati.campo_collegamento = myTmp.campo_collegamento WHERE myTmp IS NULL

    Se non hai mysql 4 bisogna giocare un po' con le tabelle temporanee

    Poi una volta risolto fai in modo che non possano più essere inseriti duplicati
    per favore NIENTE PVT TECNICI da sconosciuti

  8. #18
    Originariamente inviato da Fabio Heller
    Se ti restituisce comunque tutte le righe vuol dire che non si tratta di duplicati perfetti, ma di duplicati solo in relazione ad uno o alcuni campi.

    Allora dovresti poter fare così

    --tabella di parcheggio
    CREATE TEMPORARY TABLE myTmp AS
    SELECT DISTINCT campo1, campo2, campoX
    FROM tabella_con_duplicati

    --sintassi solo per Mysql 4 (elimina i record selezionati
    -- attraverso un JOIN)
    DELETE tabella_con_duplicati
    LEFT JOIN myTmp ON
    tabella_con_duplicati.campo_collegamento = myTmp.campo_collegamento WHERE myTmp IS NULL

    Se non hai mysql 4 bisogna giocare un po' con le tabelle temporanee

    Poi una volta risolto fai in modo che non possano più essere inseriti duplicati
    provo e ti faccio sapere!! grazie

  9. #19
    Una svista, coreggo

    DELETE tabella_con_duplicati
    LEFT JOIN myTmp ON
    tabella_con_duplicati.campo_collegamento = myTmp.campo_collegamento
    WHERE myTmp.campo_collegamento IS NULL
    per favore NIENTE PVT TECNICI da sconosciuti

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.