Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Query delete, cancellare dati uguali confrontando 2 tabelle

    Ciao a tutti, ho provato di tutto, non riesco a confrontare 2 tabelle e eliminare i dati che sono uguali.
    la tabella carte e la tabella piu recente, conta 2000 carte, cartedb e quella vecchia, conta 300 carte. dovrei togliere dalla tabella carte queste 300 righe, non tutte sono presenti in carte. ho provato con
    DELETE carte FROM carte, cartedb WHERE carte.number=cartedb.number
    questa non funziona fra queste tabelle, ho provato a confrontare altre tabelle diverse e funziona, ma fra queste due no pur essendo uguali! i campi sono giusti, non restituisce nessun errore dice affected row 0, mentre sono certo che dentro ci sono dei campi uguali!
    ho provato anche con uno script php ma anche qua 0.
    lo script e questo

    le colonna sono uguali per entrambe le tabelle e sono settate cosi
    Field Type Collation Null Default
    number varchar(50) latin1_swedish_ci Yes NULL

    -----------------------------------------------------------------------------------
    <?

    $db_host = "localhost";
    $db_user = "root";
    $db_password = "";
    $db_name = "data";

    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione al database");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri ");



    $query = "select * from cartedb";

    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);
    $num = $row[number];
    echo "$num";




    $query2 = "delete from carte where number = '".$row[number]."'";
    $result2 = mysql_query($query2, $db);



    if (mysql_query($query, $db))
    echo "dati ricevuti dal database";


    if (mysql_query($query2, $db))

    echo "carte tolte";



    mysql_close($db);
    ?>
    ----------------------------------------------------------------
    qualcuno sa dove e il problema?

  2. #2
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Hai provato a fare:

    codice:
    DELETE FROM carte WHERE number = (SELECT number FROM cartedb)
    Ciao!

  3. #3
    ciao mi restituisce il seguente errore

    MySQL said:

    #1242 - Subquery returns more than 1 row

  4. #4
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Si certo mi sono sbagliato io... serve l'operatore IN

    codice:
    DELETE FROM carte WHERE number IN (SELECT number FROM cartedb)

  5. #5
    si adesso funziona ma

    Deleted rows: 0 (Query took 0.2298 sec)
    lo stesso debug che mi fa lo script php e il comando
    DELETE carte FROM carte, cartedb WHERE carte.number=cartedb.number
    ritorna sempre
    Deleted rows: 0 eppur ci sono numeri uguali!
    i numeri sono una sequenza di 16 caratteri, ho provato su altre tabelle con sequenze di numeri piu piccole e funziona cancella i numeri uguali.
    non e che con numerazioni da composizioni di 16 caratteri il varchar 50 non va molto bene?

  6. #6
    incredibile ho fatto anche questo
    SELECT number FROM carte WHERE number NOT IN (Select number as number FROM cartedb)
    ritorna 509 rows su 509!
    ci sono numeri di carte uguali e impossibile che non li trova!

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.