Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

HegonFelipe

Relacionar 3 tabelas para mostrar 1 campo

Recommended Posts

Bom dia.

 

Estou encontrando dificuldades em resolver o seguinte problema:

 

Devo gerar um relatório que mostre os campos:

 

ID, CLIENTE, PRAZO, ASSUNTO, TAREFA e QUEMDESIGN da tabela Tarefas e NOME da tabela Cedente.

 

Só que o problema reside que para obter o nome do cedente, eu devo pegar o IDPROPOSTA na tabela Tarefas, relacionar com IDCEDENTE na tabela Propostas e, com isso, relacionar com NOME na tabela Cedente.

 

Fiz o seguinte código:

 

-- inserindo dados na tabela temporária relatorio

INSERT into relatorio (ID, CLIENTE, PRAZO, ASSUNTO, TAREFA, QUEMDESIGN, CEDENTE)

(select tarefas.ID,

tarefas.CLIENTE,

tarefas.PRAZO,

tarefas.ASSUNTO,

tarefas.TAREFA,

tarefas.QUEMDESIGN,

cedente.NOME

From tarefas , propostas, cedente

where

-- aqui eu tento realizar uma 'gambiarra' para fazer as comparações e retornar o nome do Cedente

(tarefas.idproposta = propostas.idcedente

and propostas.idcedente = cedente.id)

-- aqui faz o filtro dos dados que o usuário digitou para gerar o relatório

and if(@idclie>0, IDCLIENTE=@idclie, 1=1)

and if(trim('[DATA1]')<>'', PRAZO>='[DATA1]', 1=1)

and if(trim('[DATA2]')<>'', PRAZO<='[DATA2]', 1=1)

-- faz a ordenação

ORDER BY CLIENTE,PRAZO

);

 

Quem puder me auxiliar, eu agradeço desde já.

 

Abraços;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não conseguiu fazer com JOIN's?

 

Poste a estrutura de suas tabelas, assim ficará mais fácil de ver a sua situação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui com JOINs. Na verdade nem tentei muito.

 

Tenho a tabela Tarefas, que contém todos os dados que eu desejo exibir (ID, CLIENTE, PRAZO, ASSUNTO, TAREDA e QUEMDESIGN) menos o nome do CEDENTE.

A tabela Tarefas contém o IDPROPOSTAS que está ligado com a tabela Propostas, e nesta tabela Propostas, tem o IDCEDENTE, que está relacionado com Cedente, onde contém o NOME do Cedente.

 

Desculpa qualquer explicação mal feita, ainda sou novato em SQL.

 

Obrigado.

 

-- EDIT

 

Acho que eu estou no caminho correto aqui, o único problema agora é que aparece que a clausula where está ambigua, o que deve fazer para que ela não seja mais ambigua?

-----

Compartilhar este post


Link para o post
Compartilhar em outros sites
... o que deve fazer para que ela não seja mais ambigua? ...

 

Qualifique a tabela

 

TABELA.COLUNA

Compartilhar este post


Link para o post
Compartilhar em outros sites
... o que deve fazer para que ela não seja mais ambigua? ...

 

Qualifique a tabela

 

TABELA.COLUNA

Poderia ser mais específico por gentileza?

 

Sou novato nisso. ;s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sempre que fizer referencia a um campo de sua tabela você deve informar de qual tabela você esta consultando ou comparando o campo.

 

SELECT 
     tabela1.campo1, tabela1.campo2,
     tabela2.campo1, tabela2.campo2
FROM
     tabela1 LEFT JOIN
     tabela2 ON tabela1.campo1 = tabela2.campo1
WHERE
     tabela1.campo1 = 'qualquercoisa'

 

Espero que tenha compreendido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.