Duvida: Consulta com insercao, e atualizacao ? é possivel?

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Seg, 06 Fev 2006 2:07 pm

Eae pessoal, bom ... tava dando uma olhadinha no forum e achei muito bom... hehe e aproveitei pra postar uma duvida pra vocês...

É o seguinte...
Por exemplo eu tenho a tabela de funcionarios e outra de dependetes..
eu quero pegar os dependentes que tem o nome "joao" e inserir eles como funcionarios na tabela de funcionarios... tem como !?!??!
como daria pra fazer isso ??

vlw...se ficou meio confuso, eheh posta denovo que eu explico melhorzinho..
xShinmi
Localização: Presidente Prudente

Mensagemem Seg, 06 Fev 2006 2:23 pm

Como é a tabela de Funcionário e de dependentes ?

Dá um DESC aí pra galera :-)
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Seg, 06 Fev 2006 2:30 pm

:) bom.. na verdade foi uma analogia... porque na real é bem mais complexo que isso hehe !!!

Bom então ai vai... vou explicar do jeito que está...
aqui na empresa agente tem um banco onde estao cadastrados os "lotes" que seriam os terrenos das casas... e em cada lote logicamente ta cadastrado 1 ou mais endereço !!! Por isso eu queria pegar os lotes que estao cadastrados com mais de um endereço, criar um lote novo, e jogar esse endereco nesse lote. fazer na mão um por um eu consigo, mas o que eu queria é fazer uma funcao, para achar todos os lotes que tem + que 1 endereco criar um lote automaticamente e jogar o endereco pra esse novo lote... deixando assim todos lotes com apenas 1 endereco...
ai vai o desc das tabelas:
onde lot_face seria o lote e address o endereco

Código: Selecionar todos
lot_face:
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
FEAT_NUM                                  NOT NULL NUMBER(10)
G_VERSION                                 NOT NULL NUMBER(10)
G_NEXT_VERSION                                     NUMBER(10)
G_GENERATION                                       NUMBER(10)
CENTER_LINE_FNUM                          NOT NULL NUMBER(10)
LOT_ID                                             NUMBER(10)
LOT_TYPE                                  NOT NULL NUMBER(1)
NUM                                                VARCHAR2(35)
NUM_QTY                                            NUMBER(3)
FEEDER_POINT                              NOT NULL NUMBER(1)
ZIP                                                VARCHAR2(10)
ATTENDANCE                                         NUMBER(1)
REFERENCE_NAME                                     VARCHAR2(60)
REFERENCE_TYPE                                     NUMBER(10)

address:
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ID                                        NOT NULL NUMBER(10)
LOT_FACE_FNUM                                      NUMBER(10)
STREET_ID                                 NOT NULL NUMBER(10)
SPECIAL_ADR_FNUM                                   NUMBER(10)
ADDR_TYPE                                          NUMBER(1)
NUM                                       NOT NULL VARCHAR2(35)
COMPL                                              VARCHAR2(35)
DEDICATED                                          NUMBER(1)
ROW_LOCK                                           NUMBER(10)
ROW_LOCK_TYPE                                      VARCHAR2(1)
G_VERSION                                 NOT NULL NUMBER(10)
G_NEXT_VERSION                                     NUMBER(10)
G_GENERATION                                       NUMBER(10)


heheheh é isso aí...
se precisar d+ algo tamoe aí !
xShinmi
Localização: Presidente Prudente

Mensagemem Seg, 13 Fev 2006 3:00 pm

Dae galera...
Bom, só pra constar eu consigo fazer o que eu queria... não sei se vocês entenderam qualquer eu tava querendo mas ... agradeço

eu consigui fazendo o seguinte...
eu fiz uma função
nela eu declarei um cursor, fiz a consulta que eu queria
depois eu fui dando um insert de acordo com as informacoes que eu tinha no cursor...
vlwww
fuizzz
xShinmi
Localização: Presidente Prudente

Mensagemem Seg, 13 Fev 2006 4:13 pm

Acho que você pode fazer o INSERT direto:
Veja o exemplo:
Código: Selecionar todos
INSERT
INTO TABELA1
( CAMPO1
, CAMPO2
, CAMPO3
)
(SELECT
  X.CAMPOX1
, X.CAMPOX2
, X.NOME
FROM OUTRA_TABELA X
WHERE NOME LIKE 'JOAO%'
)
/


Assim, ele faz primeiro o select de baixo, e insere tudo na tabela1. Sem precisar fazer uma rotina pra isso. (Desculpe, não tinha entendido direito sua dúvida...)


É possível também usar o MERGE, pra fazer INSERT e UPDATE ao mesmo tempo. (caso existe, faz update, se não existe, faz INSERT). Veja esse tópico:
http://www.glufke.net/oracle/viewtopic.php?t=305

:-o
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Ter, 14 Fev 2006 10:58 pm

nossa dr_gori essa informacao foi valiosissima... !!!
é que agora que comecei a mecher com o sql no oracle... tem muita coisa que da pra fazer... muito bomm !!!
Vlw aeee !!!
mais dicas...são sempre bem vindas !!!!
xShinmi
Localização: Presidente Prudente


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


    Voltar para SQL

    Quem está online

    Usuários navegando neste fórum: Majestic-12 [Bot] e 3 visitantes