Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    35

    [mysql 5.1] dividere nome da cognome

    ciao a tutti,
    devo "restaurare" una tabella di 24.000 records contenente i nominativi di persone con relativo indirizzo.Sto restaurando Nome e cognome che purtroppo sono stati inseriti in un unica colonna e come tali me li sono importati (inseriti sempre prima cognome e poi nome).
    Riesco creando una colonna ad inserire in essa i risultati di una select che utilizza LEFT e LOCATE.

    alter table add COGNOME; insert...........
    select nomecognome from tblog
    left(nomecognome, LOCATE(" ", nomecognome, 4)-1);

    Utilizzo l'indice 4 per i cognomi DE Filippis ecc ecc.

    a questo punto vorrei continuare ed eliminare (delete???) la parte trovata dalla colonna nomecognome in modo tale da poter avre sottomano solamente i nomi e quindi cambiare solo il nome della colonna da nomecognome a NOME.
    Non ci ho ancora provato mi serve sapere se delete è un buon inizio o è meglio seguire un'altra strada ?

    grazie

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Secondo me non è il modo corretto di procedere.
    Non puoi stabilire con assoluta certezza la lunghezza del Cognome né da quante parole esso sia composto, a esempio se ha 2 cognomi?. infatti tu puoi avere una casistica variegata:
    - De Filippis Mario
    - Dalla Maria Andrea
    - Cordero di Montezemolo Luca
    - Ripa di Meana Marina
    - ecc.

    Forse conviene creare prima una tabella sulla base di tutte le considerazioni possibili che almeno si avvicini ad un risultato 'probabile'.
    Poi la esporti su Excel e la controlli.
    24.000 sono stati tanti, però...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    35
    gibra inannzitutto grazie per la risposta poi ,
    - il files era in access l'ho copiato ed importato in csv l'incidenza dei cognomi doppi è insignificante (2/3) ma non per questo meno importante
    - appunto per togliere anche queste piccole imperferzioni volevo avere una colonna con solo quello che resta per poi lavorarci ancora

    tu comunque quale strada consigli?

  4. #4
    io farei così

    aggiunta di 3 colonne

    - nome
    - cognome
    - trattato

    poi cercherei i cognomi che hanno un solo spazio, quindi > in cognome ciò che sta prima dello spazio, in nome quello che sta dopo lo spazio, colonna trattato = true

    poi vediamo quelli che restano

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    35
    optime grazie,

    utilizzando prima left e poi right quindi faccio girare 3 select che vanno ad inserire su tre colonne diverse e poi elimino la colonna iniziale

    ragionamento corretto?

  6. #6
    io non eliminerei la colonna originale, non si sa mai!

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    35
    problemino dopo aver creato la colonna Cognome (varchar(30)),la query

    insert into tblong(cognome)
    select left(identif, locate(" ", identief, 3)-1) from tblong;

    non mi inserisce nulla e la select funziona.

    Mentre invece

    update tblong set cognome = left(identif, locate(" ", identif,3)-1);

    funziona egregiamente

    dov'è l'inghippo forse insert e select sulla stessatb?

    ??????????

  8. #8
    la INSERT è concettualmente sbagliata. va fatta una UPDATE!

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    35
    Ok su update per quanto riguarda i cognomi è fatta mi sono bloccato sui nomi.
    -update tblong set nome = right(identif, locate (" ", identif, -1));
    non funziona non riesco a fargli capire che deve prendere tutti caratteri sino al primo spazio partendo da dx.

    - update tblong set nome = (select substring_index(identif, " ", -1) from tblong);

    non è possibile sulla stessa tabella

    generata una vista con la select di cui sopra è ok ma impossibile fare update

    consigli???

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    update tblong set nome = substring_index(identif, " ", -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.