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

    [MYSQL] Modificare molti record in sicurezza

    Ciao a tutti.
    Mi rivolgo a voi perchè avete (spero) una buona esperienza di mySQL e di SQL in genere.

    Problema: ho un db con circa 700 record di recensioni di libri. Quando iniziai a popolarlo (ero molto inesperto) pensai bene di mettere nel campo 'titolo' il nome del libro più il nome dell'autore es. 'Il pendolo di Focault di Umberto Eco'

    SOno sorte però nuove esigenze e vorrei togliere quel '...di nomeautore' da tutti i titoli.

    Voi come fareste?

    www.sergiogandrus.it
    Il mio blog sull'informatica

  2. #2
    io farei cosi:

    ovviamente prima di tutto fai un dump del database...
    crei un nuovo campo autore nella tabella...

    [list=1][*]con una funzione mi troverei partendo dalla fine, la prima occorrenza della parola "di"...[*]mi salverei il valore di tutto ciò che trovo da di in poi in una variabile, e tutto quello che c'è prima in un altra variabile...[*]farei una query del tipo... UPDATE tabella SET title = '$new_title', autore = '$autore' WHERE id = '$id';[*]metterei il tutto dentro un ciclo while...[/list=1]

    per le funzioni chiedi in giro...

    Ciao!

  3. #3
    Aggiungi una colonna "autore" e fai due UPDATE
    codice:
    UPDATE tabella SET 
    autore = trim(substring_index(titolo, 'di', -1));
    
    UPDATE tabella SET
    titolo = trim(substring_index(titolo, CONCAT('di ', autore), 1 ));
    occhio agli spazi...



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

  4. #4
    Grazie ad entrambi.
    Mi chiedevo se non combino un casino con i titoli che hanno un 'di' nel titoli tipo: 'il pendolo di Focault'?
    www.sergiogandrus.it
    Il mio blog sull'informatica

  5. #5
    Originariamente inviato da Harding
    Grazie ad entrambi.
    Mi chiedevo se non combino un casino con i titoli che hanno un 'di' nel titoli tipo: 'il pendolo di Focault'?
    Fai una copia della tabella e prova ...

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

  6. #6
    come al solito intervene piero.mac


    Codice PHP:
    UPDATE tabella SET 
    autore 
    trim(substring_index(titolo'di', -1));
    // se il titolo attuale è 'Il pendolo di Focault di Umberto Eco' 
    // autore diventa 'Umberto Eco' 

    UPDATE tabella SET
    titolo 
    trim(substring_index(titoloCONCAT('di 'autore), ));
    // concat unisce 'di ' (con uno spazio dopo il di) ad autore,
    // e prende tutto cio che trova prima
    // in questo caso: titolo = 'Il pendolo di Focault di Umberto Eco'
    // diventa : 'Il pendolo di Focault di Umberto Eco' meno 'di Umberto Eco'
    // per cui: 'Il pendolo di Focault' 
    come dice piero, occhio agli spazi...
    e fai la prova su una copia della tabella prima!!!

    Ciao!

  7. #7
    Perfetto!
    Qualche riga è saltata ma niente di irrecuperabile.

    Grazie

    www.sergiogandrus.it
    Il mio blog sull'informatica

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.