Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170

    [MySql-Query]Insert multiplo con Select

    Salve a tutti.
    Praticamente ho una tabella con un vecchio DB con un bel po di campi.
    Probabilmente la tabella l'ha fatta un bambino oppure hanno esportato il tutto in una tabella non so però adesso mi ritrovo tipo 10000 record da dividere in più tabelle.Spiego meglio.


    la mia struttura è :

    codice:
    Tab_Città
      -ID
      -Nome_Citta
    
    Tab_Categorie
      -ID
      -Nome_Categoria
    
    Tab_Anagrafica
      -ID
      -Nome
      -Cognome
      -Via
      -Id_Città
      -Id_Categoria
    
    Tab_Attività
      -ID
      -Id_Anagrafica
      -Intestazione
      -Via
      -Id_Citta
      -....
    ................


    La struttura invece da cui devo prendere i dati è:

    codice:
    Tab_Vecchio_DB
      -Codice
      -Nome
      -Cognome
      -Categoria
      -Citta
      -Intestazione_Attività
      -via
      -tel
      -.......

    Adesso il mio problema è dividere i dati nelle mie tabelle.
    Vorrei fare una cosa tipo....

    query : INSERT....

    non so forse è impossibile

    query : INSERT Tab_anagrafica FROM Tab_Vecchio_DB (..campi..) .......

    Cioè non so se mi sono spiegato bene.....vorrei in una query inserire i dati di una in più tabelle andando a cercare il codice corrispondente di un campo. Per esempio nella vecchia tabella c'è

    Nome : Pinco
    Cognome : Pallino
    Categoria : Abbigliamento
    Intestazione : Pinco Pallino & Friends Company
    via : Tal dei Tali 12
    Città : Milano
    ecc.....


    io vorrei inserire Nome e Cognome nella mia Tabella Anagrafica, "categoria","Intestazione" e Citta nella tabella attività ricavando però il codice della categoria dalla Tab_Categorie(già popolata) e il codice della città dalla Tab_Citta(anchessa poplata), ovviamente inserendo anche l'ID_anagrafica del record appena inserito.


    Penso proprio che è impossibile fare tutto in unica query però forse con dei trigger si potrebe fare qualcosa ma non so assolutamente come funzionano.

    Un altra soluzione potrebbe essere fare un algoritmo che fa tutto in un ciclo ma 10000 record mi sa che è un po complesso e lentuccio volevo vedere se era possibile fare tutto in una query un po più complessa.

    Qualcuno mi potrebbe dare una mano??????

    Grazie tantissime ciao!!!

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    insert into tabella_nuova(nome,cognome)
    select nome,cognome from tabella_vecchia
    ...
    eccetera

    cerca sul manuale di mysql insert into select.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170
    Si grazie.
    Sapevo che posso mettere le select in una Insert il problema e che devo smistare più risultati di una tabella in più tabelle.
    Se guardi bene l'esempio è più complesso. NOn riesco neanche ad immaginare :-(.

    Cmq grazie anche solo della considerazione i miei ultimi 3 post mi sono risposto da solo :-).

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Così su due piedi sinceramente non ti so rispondere ma dubito fortemente che con un'unica query, procedura o quant'altro, tu possa risolvere.
    Bisognerebbe avere sottomano il db per cercare di capire meglio la struttura già esistente e tentare di salvare il salvabile.

    Hai tutta la mia solidarietà, anche io qualche mese fa ho ereditato un database fatto da una capra e molte cose per normalizzare il db le ho dovute inserire tutte a manina. VVoVe:

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170
    Cavolo 10000 record!!!!
    Non posso a mano ricopiarli e dividerli ci deve essere un qualche modo per dividerli tenendo conto del codice.

    Però visto che comunque il codice unico l'ho già posso usare quello e fare più insert nelle tabelle.
    Comunque provo vediamo che riesco a fare grazie ciao!

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non dico che debba fare tutto a manina. Dico che esiste la possibilità che alcune cose non sia possibile normalizzarle tramite codice.

    Comunque non avendo sottomano i tuoi record ti do un suggerimento un pò sul vago.

    Ad esempio, per la tua nuova tabella categorie fai una

    select distinct dalla vecchia tabella e la integri dentro l'insert per crearti la nuova tabella di tutte le categorie.

    A questo punto nella tabella in cui dovrai mettere l'id corrispondente di quella categoria farai una query di update del genere

    codice:
    update nuova_tabella,vecchia_tabella
    set nuova_tabella.id_cat = vecchia_tabella.id 
    where nuova_tabella.categoria = vecchia_tabella.categoria
    e così via. Qualcosa magari recuperi.

    edit. Per vecchia tabella intendo quella che hai creato tu facendo la select distinct dei tuoi record cui associ un id autoincrementante.

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.