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

    [SQL] Duplicare dei record

    Premetto che non conosco molto bene l'SQL.
    Avrei bisogno di una query che mi permetta di duplicare una serie di record di una tabella.
    Mi spiego meglio con un esempio:

    Nella tabella (tra gli altri) ho alcuni record che hanno campo PIPPO="PROVA". Devo duplicare tali record modificando il campo PIPPO con il valore "PROVA2".
    Da questo:


    CAMPO1 CAMPO2 PIPPO

    ----------------------------------------------
    Valore1_1 Valore2_1 PROVA
    Valore1_2 Valore2_2 PROVA
    Valore1_3 Valore2_3 PROVA


    Dovrei ottenere questo:


    CAMPO1 CAMPO2 PIPPO

    ----------------------------------------------
    Valore1_1 Valore2_1 PROVA
    Valore1_2 Valore2_2 PROVA
    Valore1_3 Valore2_3 PROVA
    Valore1_1 Valore2_1 PROVA2
    Valore1_2 Valore2_2 PROVA2
    Valore1_3 Valore2_3 PROVA2



    Qualcuno sa dirmi che query posso utilizzare?

    Spero di essermi spiegato bene.
    Grazie in anticipo!!
    Ciao!
    lupusinfabula

    Programmatore VB, ASP, Delphi.

  2. #2
    ti aiuterei volentieri, ma...vedo ke nn sono l'unica a nn capirci nulla!!!
    Dany.san

  3. #3
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    in sql non puoi, se usi oracle posso dirti come fare

  4. #4
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    prova non sono sicuro:

    INSERT INTO tabella SELECT campo1, campo2, pippo & '2' FROM tabella WHERE PIPPO = 'PROVA'

    vado un po' di fantasia..

  5. #5
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    il problema è che da quanto vedo quella che metti non è chiave primaria e ritorna molti record

    INSERT INTO tabella
    VALUES(SELECT campo1, campo2, pippo & '2'
    FROM tabella
    WHERE PIPPO = 'PROVA')

    con questa query andrebbe in errore

    bisogna leggere tutti i record e poi elaborarli uno per volta

  6. #6
    premessa: capisco di SQL ma non di sql applicata a VB, io conosco l'sql dell'as400..............

    dai vostri esempi non capisco il modo di ragionare perchè non le so leggere, detto ciò:

    se la montagna non viene da te........ PERCHE' NON CI VAI TU???

    ovvero, anzicchè utilizzare lo stesso file come origine e come destinazione, perchè non fai due sql utilizzando un filetto di transito?

    se vuoi ti posto l'sql che farei su as400 ma poi c'abbiamo lo stesso problema..... che tu non capisci quello che scrivo io....
    entra su ciaopeople chat e tieniti informato con
    news - se ti interessa il poker di
    4a puoi guarda alcuni video su
    Poker Libero Video

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    1
    Forse mi sfugge qualcosa...
    ...se sei in ambiente Oracle puoi fare una procedurina che poi lanci con:

    EXEC NOMEPROCEDURINA;

    la procedurina potrebbe essere tipo:

    Create or replace procedure NOMEPROCEDURINA
    as
    cursor cur is select * from TABELLA
    where PIPPO='PROVA';
    val_cur cur%rowtype;

    Begin
    Open cur;
    Loop
    Fetch cur into val_cur;
    Exit when cur%notfound;
    Insert into TABELLA
    values (Select val_cur.campo1,val_cur.campo2,val_cur.pippo||'2'
    from TABELLA);
    End loop;
    Close cur;
    end;

    Non l'ho verificata ma occhio e croce funziona.

    Ciao.

  8. #8

    Grazie a tutti

    Grazie ragazzi, da quanto ho capito il modo migliore è quello di fare un ciclo di "INSERT" una per ogni record rilevato con la "SELECT * From Tabella Where PIPPO='PROVA'". Giusto?

    Grazie mille a tutti!!

    PS:Ad ogni modo se vi vengono in mente altre soluzioni fatemelo sapere....
    :quipy:
    lupusinfabula

    Programmatore VB, ASP, Delphi.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.