Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: record copiati

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    36

    record copiati

    Il titolo non è azzeccato......
    Mi sto scontrando con la copia dei record di una tabella dentro un'altra
    tabella con la stessa struttura ma vuota, l'operazione viene
    eseguita correttamente...ma.....omette il primo record.
    Ho provato col ciclo WHILE e l'opzione MYSQL_BOTH,
    col ciclo FOR, con l'IGNORE per le chiavi prim., eliminando le chiavi prim.,
    ...........ma sempre quel risultato strano viene fuori !

    Sapete indicarmi come risolvere questa anomalia??

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    per creare una tabella identica a quella originaria fai

    create table nuova_tabella like vecchia_tabella

    a questo punto, per copiare i dati ti basta fare una insert into select

    codice:
    insert into nuova_tabella (campo1,campo2,...,campoN)
    select campo1,campo2,...,campoN from vecchia_tabella

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    36
    ciao nicola75ss, grazie dell'interessamento, comunque tengo a precisarti
    che non è una mera clonazione, ma nella prima tabella vi è un dato numerico
    che scompongo nella seconda in tre campi distinti, per questo mi serve ciclare/iterare le risultanze della tabella A per poi inserirle nella tab. B.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se mi dici come devi scomporre questo campo provo a darti una mano.
    Immagino allora che non ti serva nemmeno clonare la tabella ma che sia sufficiente aggiungere tre campi a quella già esistente, fare una query di update per scomporre il campo e infine rimuovere il campo "unico".

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    36
    ma in effetti forse è meglio che ci lavoro con un alias di tabella o una tabella temporanea
    per aggiornare tre campi che aggiungerò alla tabella originale settandoli a NULL ,
    comunque il mio problema non era come farlo (l'operazione va a buon fine) ma perche' mi salta il primo record?
    ora mi metto sotto e ci provo, la tua gentile e gradita offerta di aiuto me la riservo come bonus
    nel caso proprio non ce la facessi, con la tua santissima approvazione !

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se hai fatto l'operazione tramite php posso supporre che magari abbia usato due volte la funzione mysql_fetch_assoc e che perda il primo record per quello. Senza vedere codice si possono fare solo congetture.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    36
    Ok scusa, e vero, ti posto parte del codice con le due prove che ho fatto :

    1) Con il WHILE e mysql_both :

    $sql="SELECT rubrica.id,
    rubrica.nome,
    rubrica.data,
    FROM rubrica
    WHERE 1 " ;
    $result=mysql_query($sql);
    $count=mysql_num_rows($result);
    if(($count)>0){
    while ($array = mysql_fetch_array($result,MYSQL_BOTH)){
    $idp = $array[0];
    $nome = $array[1];
    $data = $array[2];
    $ex=explode("/",$array[2]);
    $a = $ex[0];
    $b= $ex[1];
    $c = $ex[2];
    $sql1=("INSERT INTO rubrica_copia VALUES('$idp', '$nome', '$data', '$a', '$b', '$c')");
    $result1=mysql_query($sql1);
    }

    2) con il ciclo FOR (dato il dubbio che while potesse saltare il primo record) :

    $sql="SELECT........ " ;
    $result=mysql_query($sql);
    $array=mysql_fetch_array($result,MYSQL_BOTH);
    $count=count($array);
    for ($i=0; $i<=$count; $i++) {.......
    assegnazione delle variabili ed insert.................


    dimmi dove sbaglio.........

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Adesso sono in ufficio e non ho la possibilità di guardare attentamente il tuo codice. Stasera eventualmente gli do un'occhiata.
    Il campo su cui fa l'explode che cos'è, una data che avevi inserito in formato varchar?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    36
    bravo nik, quel campo era un numero di catalogazione , inserito in formato varchar e proveniente da un db access (...brrrrr..), che ora scompongo in tre campi : tinynt il primo e int(4) il secondo e terzo.
    Buon lavoro e a dopo !

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Esegui prima questa select e accertati che la scomposizione dei 3 valori avvenga in modo corretto

    codice:
    select campo_con_slash,
    substring_index(campo_con_slash,'/',1) as uno,
    substring_index(substring_index(campo_con_slash,'/',2),'/',-1) as due,
    substring_index(campo_con_explode,'/',-1) as tre
    from tabella
    Se il risultato della query è quello atteso, una volta aggiunti i 3 campi alla tabella, esegui la corrispettiva query di update

    codice:
    update tabella set
    nuovo1 = substring_index(campo_con_slash,'/',1),
    nuovo2 = substring_index(substring_index(campo_con_slash,'/',2),'/',-1),
    nuovo3 = substring_index(campo_con_slash,'/',-1)

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.