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
xShinmi
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Seg, 06 Fev 2006 1:58 pm
Localização: Presidente Prudente

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..
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

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

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

Dá um DESC aí pra galera :-)
xShinmi
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Seg, 06 Fev 2006 1:58 pm
Localização: Presidente Prudente

:) 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

Selecionar tudo

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
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Seg, 06 Fev 2006 1:58 pm
Localização: Presidente Prudente

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
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

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

Acho que você pode fazer o INSERT direto:
Veja o exemplo:

Selecionar tudo

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
xShinmi
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Seg, 06 Fev 2006 1:58 pm
Localização: Presidente Prudente

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 !!!!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes