Inserimento dati con corrispondenda ID

di il
7 risposte

Inserimento dati con corrispondenda ID

Ciao,
ho due tabelle e vorrei inserire i dati da una tabella all'altra, in maniera tale che al campo data corrisponda la data relativa al corretto ID:

INSERT INTO table_A (campo_data) 
  SELECT table_B.campo_data 
  FROM table_B, table_A
  WHERE table_A.ID = table_B.ID
me li aggiunge alla fine, trovandomi con tutti i campi NULL, tranne la colonna data, ho provato anche col comando REPLACE INTO ma il problema persiste!
Cosa sto sbagliando

7 Risposte

  • Re: Inserimento dati con corrispondenda ID

    Mi sembra che tu utilizzi i dati di un prodotto cartesiano tra tabelle e poi le vai a inserire nella tabella. Questo non mi sembra che abbia senso, ossia come fai a fare il prodotto cartesiano se non hai i dati in entrambe le tabelle?, ma solo in una. Mi sa che è per questo che ottieni valori NULL.
  • Re: Inserimento dati con corrispondenda ID

    Nelle due tabelle ho lo stesso identificatore ed entrambe sono piene.
    Nello specifico all'interno della table_B ho una data associata all'identificatore che vorrei importare nella table_A, associandola dove manca.
    Praticamente le due tabelle sono fatte cosí:
    
    table_A             table_B
    ID | Data | ...     ID | Data
    1  | NULL | ...     x  | yyyy-mm-dd
    2  | NULL | ...     y  | yyyy-mm-dd
           ..                 ..
    n  | NULL | ...     m  | yyyy-mm-dd
    
    l'Indetificatore é in entrambe le tabelle, la data solo nella seconda.
  • Re: Inserimento dati con corrispondenda ID

    Ok, dentro hai i dati. Sto pensando... con la SELECT selezioni le date dalla tabella "B" che hanno corrispondenza con gli ID di entrambe, e hai ottenuto un elenco di date. A questo punto inserisci le date nell'altra tabella diciamo permettimi il termine "alla diffusa", ossia accodandole alle altre date. Dovresti avere le date che avevi prima, cioè valori NULL e altri record che corrispondono con le date della tabella "B", in teoria il doppio
    Una cosa del tipo:
    Tabella A
    1 NULL
    2 NULL
    3 NULL
    ...
    n NULL
    n+1 Data_ID1_Tabella "B"
    n+2 Data_ID2_Tabella "B"
    ...
    n+n Data_IDn_Tabella "B"

    sempre se ID è autoincrementale.
    Ti succede questo?
  • Re: Inserimento dati con corrispondenda ID

    In effetti ottengo il doppio dei dati, con la tabella A piena dei dati che avevo giá piú una serie di NULL in tutte le colonne tranne nella colonna Data che é piena!
    L'ID non é autoincrementale

    Non so potrei provare a creare una procedura nella quale metto una condizione IF dove se gli ID sono uguali inserisco la data...
  • Re: Inserimento dati con corrispondenda ID

    Prima cosa, che non mi sono accorto è che utilizzi INSERT INTO ed è sbagliato, dovresti usare UPDATE.
    Io come farei?.... Estrapolerei i dati della Tabella "A" ordinati per ID ascendente e li metto in DataTable1 e i dati della tabella "B" ordinati per ID ascendente e li metto nel DataTable2 poi un ciclo dove copio il valore della data di Tabella "B" in data della Tabella"A".
    Probabilmente farei così.
  • Re: Inserimento dati con corrispondenda ID

    Ok, risolto, grazie per l'input sull'UPDATE...
    
    UPDATE table_A
    JOIN table_B
    ON table_A.OpID = table_B.OpID
    SET table_A.Date = table_B.Date
    
  • Re: Inserimento dati con corrispondenda ID

    Devo segnare il messaggio come risolto!?
Devi accedere o registrarti per scrivere nel forum
7 risposte