Fórum Consulta utilizando 3 tabelas - Como faco? #446565

25/06/2013

0

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
Gustavo Rosa

Gustavo Rosa

Responder

Posts

25/06/2013

Joel Rodrigues

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.
Responder

Gostei + 0

25/06/2013

Joel Rodrigues

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)
Responder

Gostei + 0

25/06/2013

Gustavo Rosa

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.
Responder

Gostei + 0

25/06/2013

Joel Rodrigues

Show de bola, Gustavo. Legal que deu certo.
Então estou marcando o tópico como Concluído.
Abraço.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar