[firebase-br] Ajuda com SQL 1/2 OFF-TOPIC ?
Wilson Rosa
wsrosa em gmail.com
Qui Mar 22 10:24:23 -03 2012
Olá Sávio,
Tem sim, a partir do Firebird 2.1 pode-se usar a função agregada LIST() que
monta uma lista do campo informado:
SELECT
c.ID_CLIENTE,
c.NOME,
LIST( f.TELEFONE ) as TELEFONES,
LIST( e.ENDERECO, ascii_char(13) ) as ENDEREÇOS,
LIST( d.DEPENDENTE, ' e ' ) as DEPENDENTES
FROM
TBCLIENTE c
INNER JOIN TBFONES f ON ( f.ID_CLIENTE = c.ID_CLIENTE )
INNER JOIN TBENDERECOS e ON ( e.ID_CLIENTE = c.ID_CLIENTE )
INNER JOIN TBDEPENDENTES d ON ( d.ID_CLIENTE = c.ID_CLIENTE )
GROUP BY
c.ID_CLIENTE,
c.NOME
O 2º parâmetro do LIST() é o separador de campos, note que no Endereço foi
usado ascii_char(13), que separa/quebra o conteúdo do campo em linha(s), ou
seja, o visual ficará mais "limpo" mas para visualizar todos os dados neste
campo é necessário aumentar a altura da linha para conseguir ver os
endereços que estão abaixo do 1º e dentro do mesmo campo.
Espero que isso te ajude.
*Wilson Rosa
wsrosa em gmail.com
*
Desenvolvedor Desk
Em 21 de março de 2012 15:32, Sávio Assunção <
savio_assuncao em pontodigital.eti.br> escreveu:
> Ola Pessoal ,
>
>
>
> Preciso importar dados de um banco de dados FB tb , que esta normalizado
> assim :
>
>
>
> Tbcliente : id_cliente , nome
>
> tbFones : id_cliente , telefone
>
> tbEnderecos: id_cliente , endereço
>
> tbDependentes : id_cliente , dependente
>
>
>
> Como consigo extrair numa mesma linha os dados das tabelas (
> tbfones,tbEnderecos,tbDependentes) quando houver + de um relacionamento
> entre elas e
>
> A tbCliente:
>
>
>
> Se eu fizer
>
>
>
> SELECT C.ID_CLIENTE,
>
> C.NOME,
>
> TBFONES.TELEFONE,
>
> TBENDERECOS.ENDERECO,
>
> TBDEPENDENTES.DEPENDENTE
>
> FROM TBCLIENTE C
>
> INNER JOIN TBFONES ON TBFONES.ID_CLIENTE=C.ID_CLIENTE
>
> INNER JOIN TBENDERECOS ON TBENDERECOS.ID_CLIENTE=C.ID_CLIENTE
>
> INNER JOIN TBDEPENDENTES ON TBDEPENDENTES.ID_CLIENTE=C.ID_CLIENTE
>
>
>
> Daí vai retornar + de uma linha se houver + de 1 relacionamento (
> c.id_cliente -> tbfones.id_cliente ) por exemplo.
>
> ID_CLIENTE NOME TELEFONE
>
> 1 JOSE 34513394
>
> 1 JOSE 99872131
>
>
>
> Tem como retornar na mesma linha ?
>
>
>
> Sávio Assunção
>
> www.pontodigital.eti.br
> Delphi 6 + FB2.1 + Debian 4
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista