locked
Ajuda SQL RRS feed

  • Pergunta

  • Amigos,

    tenho um db SQL SERVER 2000, e as seguintes tabelas:

    CADCLIE, com os campos: CD_CLIE,NM_CLIE, EMAILRCLIE, onde CD_CLIE é chave.

    AGENDA, com os seguintes campos: CD_AGENDA, CD_CLIE, CD_PROF...

    Preciso criar uma 3º tabela, com os seguintes dados:
    CD_PROF, CD_CLIE,NM_CLIE, EMAILRCLIE

    O comando SQL deve filtrar da tabela AGENDA todos os pacientes(CD_CLIE) que consultaram com o medico(CD_PROF) Eliesio por exemplo, e buscar na tabela CLIENTE apenas o e-mail(EMAILRCLIE) deste Paciente.

    Como seria esse comando? e como salvar essa nova tabela TEMPORARIA?

    obrigado,

     


    Eliesio A. Gomes
    quinta-feira, 29 de dezembro de 2011 13:24

Respostas

  • Eliseo, bom dia,

    Vc pode fazer da seguinte forma:

    select  B.CD_PROF, A.CD_CLIE,A.NM_CLIE, A.EMAILRCLIE
      INTO TB_NOVA_TABELA
     from CADCLIE as A
      inner join
     AGENDA as B
      on A.CD_CLIE = A.CD_CLIE
     WHERE B.CD_PROF = 'Eliesio'

    Espero ter ajudado.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    • Marcado como Resposta Heloisa Pires sexta-feira, 30 de março de 2012 19:38
    quinta-feira, 29 de dezembro de 2011 13:30
  • Use distinct.
    segunda-feira, 2 de janeiro de 2012 18:59

Todas as Respostas

  • Eliseo, bom dia,

    Vc pode fazer da seguinte forma:

    select  B.CD_PROF, A.CD_CLIE,A.NM_CLIE, A.EMAILRCLIE
      INTO TB_NOVA_TABELA
     from CADCLIE as A
      inner join
     AGENDA as B
      on A.CD_CLIE = A.CD_CLIE
     WHERE B.CD_PROF = 'Eliesio'

    Espero ter ajudado.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    • Marcado como Resposta Heloisa Pires sexta-feira, 30 de março de 2012 19:38
    quinta-feira, 29 de dezembro de 2011 13:30
  • Eliseo

    o Script do Eduardo deve te ajudar, mas vc precisa relamente criar uma tabela para esses valores?

    Pq vc não cria uma VIEW?

    create view UVW_ConsultaMedico
    as
    (
    select  B.CD_PROF, A.CD_CLIE,A.NM_CLIE, A.EMAILRCLIE 
      from CADCLIE as A
      inner join
     AGENDA as B
      on A.CD_CLIE = A.CD_CLIE
      )
    go
    
    --ai faz a consulta na view
    select * from UVW_ConsultaMedico WHERE CD_PROF = 'Eliesio'
    

     


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Sugerido como Resposta Rodrigo Ataíde segunda-feira, 2 de janeiro de 2012 19:10
    quinta-feira, 29 de dezembro de 2011 13:49
    Moderador
  • Prezado Eduardo, boa tarde

    abri o sql query analizer e coloquei seu procedimento, mandei executar, demorou um pouco e o resultado foi que encontrou mais de 11mil linhas.
    Porem nao criou a tabela TB_NOVA_TABELA

    fiz algo errado?


    Eliesio A. Gomes
    quinta-feira, 29 de dezembro de 2011 16:46
  • Marcelo, boa tarde

    tambem excutei os procedimentos que enviou.

    Primeiramente abri o sql query analizer e executei o 1º passo para criar a view.
    Depois colei o 2º passo e excetei, demorou um tempo e apos me trouxe apenas umas 10 linhas, mas com os dados que pedi.

    Foi mostrado 10 linhas com nomes repetidos (acho que devido o mesmo paciente ter mais de uma consulta) mas tudo bem, porem precisava que fosse apresentado todos.

    Como faço para salvar posteriormente essa tabela?

    Obrigado


    Eliesio A. Gomes
    quinta-feira, 29 de dezembro de 2011 16:50
  • Elisesio, estranho a cláusula INTO deve inserir os dados selecionados na nova tabela. Veja se o into está concatenado com o nome do campo. Veja se cláusula está destacado em azul.

    Se não der certo crie uma tabela com os mesmos nomes, tipos e tamanhos dos campos de origens e faça um insert.

    insert into TB_NOVA_TABELA

    select B.CD_PROF, A.CD_CLIE,A.NM_CLIE, A.EMAILRCLIE 
      from CADCLIE as A
    inner join
    AGENDA as B
    on A.CD_CLIE = A.CD_CLIE
    WHERE B.CD_PROF = 'Eliesio'

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    quinta-feira, 29 de dezembro de 2011 16:52
  • Eduardo, bom dia

    realmente criou a tabela TB_NOVA_TABELA no db, porem o que constatei é que ele criou diversas vezes o mesmo registro, tipo o paciente consultou mais de 1 vez ele carrega na tabela mais de uma linha com os dados do cliente.

    Pelo que vi ao exportar a tabela para um excel, foram encontrados mais de 12mil registros, porem ao importar para o programa de e-mail foram adicionados apenas 5 endereços de e-mail, isso prova que ele repetiu quase todos os dados.

     

    alguma dica?


    Eliesio A. Gomes
    segunda-feira, 2 de janeiro de 2012 15:38
  • Eliesio

    Poderia postar as estruras das tabelas e alguns registros de exemplo?

    vc precisa mesmo de uma tabela nova? uma view nao lhe atende? pois vc terá que ficar "dropando" e recriando a tabela toda vez que quiser os dados atualzado, na view isto não é necessário


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    segunda-feira, 2 de janeiro de 2012 15:44
    Moderador
  • Use distinct.
    segunda-feira, 2 de janeiro de 2012 18:59