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

Eduardo Belo beloelogica em gmail.com
Ter Mar 9 12:17:29 -03 2010


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.




Mais detalhes sobre a lista de discussão lista