Consulta utilizando 3 tabelas - Como faco?
Tenho uma tabela movimento onde possui o campo "Cod.movimento" e "Codcliente". O campo "codcliente" dependendo do "cod.movimento" ele armazena o codigo do cliente ou codigo do fornecedor. A condição é a seguinte:
Se "cod.movimento" for (1,2) ele busca o codigo na tabela clientes e retorna o "Nome Cliente".
Se "cod.movimento" for (3,4) ele busca o codigo na tabela fornecedores e retorna o "Nome Fornecedor".
Como faço isso no firebird 2.1? Já tentei vários e não consegui colocar a condição dentro do script...
Ex. cod.Movimento | Codcliente | Nome Cliente/Fornecedor
1 55 nome do cliente 55
3 23 nome do fornecedor 23
Se "cod.movimento" for (1,2) ele busca o codigo na tabela clientes e retorna o "Nome Cliente".
Se "cod.movimento" for (3,4) ele busca o codigo na tabela fornecedores e retorna o "Nome Fornecedor".
Como faço isso no firebird 2.1? Já tentei vários e não consegui colocar a condição dentro do script...
Ex. cod.Movimento | Codcliente | Nome Cliente/Fornecedor
1 55 nome do cliente 55
3 23 nome do fornecedor 23
Gustavo Rosa
Curtidas 0
Respostas
Joel Rodrigues
25/06/2013
Acho que nesse caso é interessante fazer um UNION entre dois selects. Um filtrando apenas os códigos 1 e 2 e relacionando com os cliente e outro filtrando apenas os códigos 3 e 4, relacionando com os fornecedores.
GOSTEI 0
Joel Rodrigues
25/06/2013
Seria algo mais ou menos assim:
SELECT M.COD_MOVIMENTO, C.COD_CLIENTE AS COD_CLI_FORN, C.NOME_CLIENTE AS NOME_CLI_FORN FROM MOVIMENTO M INNER JOIN CLIENTES C ON C.COD_CLIENTE = M.COD_CLIENTE WHERE M.COD_MOVIMENTO IN (1,2) UNION SELECT M.COD_MOVIMENTO, F.COD_FORNECEDOR AS COD_CLI_FORN, F.NOME_FORNECEDOR AS NOME_CLI_FORN FROM MOVIMENTO M INNER JOIN FORNECEDORES F ON F.COD_FORNECEDOR = M.COD_CLIENTE WHERE M.COD_MOVIMENTO IN (3,4)
GOSTEI 0
Gustavo Rosa
25/06/2013
Seria algo mais ou menos assim:
SELECT M.COD_MOVIMENTO, C.COD_CLIENTE AS COD_CLI_FORN, C.NOME_CLIENTE AS NOME_CLI_FORN FROM MOVIMENTO M INNER JOIN CLIENTES C ON C.COD_CLIENTE = M.COD_CLIENTE WHERE M.COD_MOVIMENTO IN (1,2) UNION SELECT M.COD_MOVIMENTO, F.COD_FORNECEDOR AS COD_CLI_FORN, F.NOME_FORNECEDOR AS NOME_CLI_FORN FROM MOVIMENTO M INNER JOIN FORNECEDORES F ON F.COD_FORNECEDOR = M.COD_CLIENTE WHERE M.COD_MOVIMENTO IN (3,4)
Show. O meu estava faltando as identificação do segundo select dos campos relacionados e por isso que não estava conseguindo fazer a seleção. Mas com seu exemplo consegui pegar a onde estava o erro e agora esta funcionando. Obrigado.
GOSTEI 0
Joel Rodrigues
25/06/2013
Show de bola, Gustavo. Legal que deu certo.
Então estou marcando o tópico como Concluído.
Abraço.
Então estou marcando o tópico como Concluído.
Abraço.
GOSTEI 0