none
Dúvida Query RRS feed

  • Pergunta

  • Galera, bom dia!

    Tenho uma tabela de Cliente, com os campos (Id_cliente,Nr_Cpf,Nm_Cliente....)

    Tenho uma tabela de Telefone com os campos(Id_cliente, Id_Telefone,Telefone...)

    Alguns clientes tem mais de dois telefone, ai na minha tabela tel fica com duas linhas, tel1, tel2

    Minha query atual retorna duas linhas

    Select* from tblCliente CLIENTE(NOLOCK) INNER JOIN

    tblTelefone TEL(NOLOCK)ON CLIENTE.Id_Cliente = TEL.Id_Cliente

    WHERE CLIENTE.Id_Cliente = 1230

    Preciso criar uma query, que me retorne tudo em uma unica linha, o tel1 e o tel2, o que fazer?

    Obrigado!

    select * from tblCliente CLIENTE (NOLOCK) INNER JOIN
    tblTelefone TEL (NOLOCK)ON CLIENTE.Id_Cliente = TEL.Id_Cliente
    WHERE CLIENTE.Id_Cliente = idcliente
    segunda-feira, 3 de junho de 2013 14:18

Todas as Respostas

  • Felipe,

    Neste artigo acho que fala exatamente o que vc precisa, segue:

    Separando valores por virgula


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    segunda-feira, 3 de junho de 2013 14:43
  • Felipe,

    Uma solução rápida é utilizar sub-query. No caso que você indicou, deve ficar assim:

    ---------------------------------------------------------------

    SELECT 
    CLIENTE.Id_cliente,
    CLIENTE.Nr_Cpf,
    CLIENTE.Nm_Cliente,
    (SELECT TEL1.RESIDENCIAL FROM TBLTELEFONE TEL1 (NOLOCK) WHERE TEL1.ID_CLIENTE = CLIENTE.ID_CLIENTE) AS TEL_RESIDENCIAL,
    (SELECT TEL2.COMERCIAL FROM TBLTELEFONE TEL2 (NOLOCK) WHERE TEL2.ID_CLIENTE = CLIENTE.ID_CLIENTE) AS TEL_COMERCIAL
    FROM TBLCLIENTE CLIENTE(NOLOCK) 
    WHERE CLIENTE.Id_Cliente = 1230

    ---------------------------------------------------------------

    Espero ter sido útil !

    Durval Ramos
    durval@msn.com

    segunda-feira, 3 de junho de 2013 15:54
    Moderador
  • Durval, boa tarde!

    Fiz um teste baseando em sua query, ela está me retornando mais de um valor, ai da erro.

    Obrigado!

    segunda-feira, 3 de junho de 2013 16:58
  • Deleted
    segunda-feira, 3 de junho de 2013 21:29
  • José, boa tarde!

    Funcionou, eu mudei  (IsNull(T2.telefone,null)), coloquei null, estava aparencendo Erro ao converter tipo de dados varchar em numeric.

    Não sei se vai interferir em algo, mas verifiquei aqui, os dados estão certo.

    Uma dúvida que eu tenho,  é possivel fazer essa query dinamica?

    exemplo: no Inner Join,Left Join eu pego os dois telefone, alguns clientes tem mais de 3 telefone, vamos supor que coloco mais 1 Join, no caso ai ele pegaria os 3 tels, se meu cliente tiver mais de 3 tel, daria para ele pegar automatico os demais tel?

    Obrigado!

    terça-feira, 4 de junho de 2013 17:23
  • Deleted
    terça-feira, 4 de junho de 2013 21:46
  • José, bom dia!

    Já avaliei a sugestão de Fb_Dev, nessa sugestão eu tenho uma coluna com todos telefones, no meu cenário, eu teria que ter cada telefone em colunas diferente, estou fazendo umas pesquisas para ver se é possível.

    Obrigado!

    quarta-feira, 5 de junho de 2013 13:47
  • Deleted
    sexta-feira, 7 de junho de 2013 01:41