[firebase-br] SQL/Consulta complexa - Firebird 2.1

Eduardo Belo beloelogica em gmail.com
Ter Mar 9 21:40:17 -03 2010


Reijanio e Douglas,

Infelizmente as dicas de vcs não funcionou.

Alguma outra sugestão?


Em 9 de março de 2010 17:28, Douglas Silva
<forum_firebird em daunebr.com> escreveu:
> Use LEFT JOIN em vez de INNER JOIN.
>
>
>
>
> ________________________________
> From: Reijanio Nunes Ribeiro <rnribeiro em gmail.com>
> To: FireBase <lista em firebase.com.br>
> Sent: Tue, March 9, 2010 3:54:26 PM
> Subject: Re: [firebase-br] SQL/Consulta complexa - Firebird 2.1
>
> faz um testetirando os paranteses após o on
> INNER JOIN INSTRUTORES
> ON TELEFONES.ID_INSTRUTOR = INSTRUTORES.ID_INSTRUTOR
>  INNER JOIN EMAILS
> ON INSTRUTORES.ID_INSTRUTOR = EMAILS.ID_INSTRUTOR
>
> de repente esssa sintase fica melhor se vc tentar assim
>
> SELECT
>   I.ID_INSTRUTOR,
>   I.INSTRUTOR,
>   E.EMAIL,
>   T.TELEFONE
> FROM INSTRUTORES I
>  INNER JOIN TELEFONES T
> ON I.ID_INSTRUTOR = T.ID_INSTRUTOR
>  INNER JOIN EMAILS E
> ON I.ID_INSTRUTOR = E.ID_INSTRUTOR
> tenta ai ve se da certo, qq coisa da um retorno pois n testei essa senteça
>
> Em 9 de março de 2010 12:17, Eduardo Belo <beloelogica em gmail.com> escreveu:
>
>> Amigos,
>>
>> Tenho as seguintes tabelas:
>>
>> TABLE INSTRUTORES
>>  ID_INSTRUTOR  INTEGER NOT NULL,
>>  INSTRUTOR     VARCHAR(80)
>>
>> TABLE EMAILS
>>  ID_EMAIL      INTEGER NOT NULL,
>>  ID_INSTRUTOR  INTEGER NOT NULL,
>>  EMAIL         VARCHAR(80)
>>
>> TABLE TELEFONES
>>  ID_TELEFONE   INTEGER NOT NULL,
>>  ID_INSTRUTOR  INTEGER NOT NULL,
>>  TELEFONE      VARCHAR(14)
>>
>> CHAVE RELACIONAMENTO = ID_INSTRUTOR
>>
>> ****************************************************
>>
>> Efetuando o select abaixo:
>>
>> SELECT
>>    INSTRUTORES.ID_INSTRUTOR,
>>    INSTRUTORES.INSTRUTOR,
>>    EMAILS.EMAIL,
>>    TELEFONES.TELEFONE
>> FROM TELEFONES
>>   INNER JOIN INSTRUTORES ON (TELEFONES.ID_INSTRUTOR =
>> INSTRUTORES.ID_INSTRUTOR)
>>   INNER JOIN EMAILS ON (INSTRUTORES.ID_INSTRUTOR = EMAILS.ID_INSTRUTOR)
>>
>> Retorno consulta:
>>
>> INSTRUTOR       EMAIL                   TELEFONE
>> --------------------------------------------------
>> MARIA          maria em hotmail.com       8605-9395
>> JOSE            jose em yahoo.com.br       3445-6181
>> JOSE            jose@@hotmail.com       9998-8294
>> JOAO            joao em gmail.com          9133-3824
>> JOAO            joao em gmail.com          3181-8037
>> JOAO            joao em gmail.com          3426-9322
>> JOAO            joao em yahoo.com.br       9133-3824
>> JOAO            joao em yahoo.com.br       3181-8037
>> JOAO            joao em yahoo.com.br       3426-9322
>>
>>
>> Observem que no caso de JOAO ele tem 2 email e 3 telefones e
>> retorna duplicado nos telefones. Eu preciso que nesse caso ele
>> retorne 2 emails e 3 telefones:
>>
>> JOAO            joao em gmail.com          9133-3824
>> JOAO            joao em yahoo.com.br       3181-8037
>> JOAO                                    3426-9322
>>
>> Tem como fazer um SELECT para retornar assim ?
>>
>> Ou existe algum erro na minha modelagem ?
>>
>> Eu preciso de tabelas idependentes de e-mail e teofne uma vez
>> que o instrutor pode ter vários telefones e emails.
>>
>> Qual a solução para este caso?
>>
>> Agradeço a todos que ajudarem.
>>
>> ______________________________________________
>> 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
>>
> ______________________________________________
> 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
> ______________________________________________
> 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