Usuário com melhor resposta
duvida em campo nulos

Pergunta
-
Prezados bom dia, vejam se e possivel,
tenho uma Sql simples que faz relacionamento entre duas tabelas FTB4 classificacao e FLAN lançamentos, NA FTB4 tenho varias contas umas 300 e algumas tem lancamentos na FLAN, outras nao, o que eu gostaria de no Select trouxesse todas as Contas, inclusive as que nao tiveram lançamentos. veja a SQL
SELECT
FTB1.CODTB1FLX,
FTB1.DESCRICAO
FROM FTB1,FLAN
WHERE
FLAN.CODCOLIGADA = FTB1.CODCOLIGADA
AND FLAN.CODTB1FLX = FTB1.CODTB1FLX
AND FLAN.CODCOLIGADA= '1'
AND FLAN.STATUSLAN = '1'
GROUP BY FLAN.CODTB1FLX,FTB1.CODTB1FLX,FTB1.DESCRICAO
ORDER BY 1Ja tentei Left Join, entre varias coisas e nada, qualquer ajuda e bem vinda.
Obrigado a todos
Respostas
-
Boa Tarde,
Via WHERE não irá funcionar. O LEFT JOIN pode fazer, mas é necessário montar os predicados corretamente.
SELECT
FTB1.CODTB1FLX,
FTB1.DESCRICAO
FROM FTB1
LEFT OUTER JOIN FLAN ON
FTB1.CODCOLIGADA = FLAN.CODCOLIGADA
AND FTB1.CODTB1FLX = FLAN.CODTB1FLX
AND FLAN.CODCOLIGADA= '1'
AND FLAN.STATUSLAN = '1'
GROUP BY FTB1.CODTB1FLX,FTB1.DESCRICAO
ORDER BY FTB1.CODTB1FLXSugiro abandonar construções que juntem colunas na cláusula WHERE. Só poluem o código e limitam suas possibilidades.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 9 de agosto de 2011 17:18
- Marcado como Resposta Ronnie Von quarta-feira, 10 de agosto de 2011 10:28
Todas as Respostas
-
-
-
Boa Tarde,
Via WHERE não irá funcionar. O LEFT JOIN pode fazer, mas é necessário montar os predicados corretamente.
SELECT
FTB1.CODTB1FLX,
FTB1.DESCRICAO
FROM FTB1
LEFT OUTER JOIN FLAN ON
FTB1.CODCOLIGADA = FLAN.CODCOLIGADA
AND FTB1.CODTB1FLX = FLAN.CODTB1FLX
AND FLAN.CODCOLIGADA= '1'
AND FLAN.STATUSLAN = '1'
GROUP BY FTB1.CODTB1FLX,FTB1.DESCRICAO
ORDER BY FTB1.CODTB1FLXSugiro abandonar construções que juntem colunas na cláusula WHERE. Só poluem o código e limitam suas possibilidades.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 9 de agosto de 2011 17:18
- Marcado como Resposta Ronnie Von quarta-feira, 10 de agosto de 2011 10:28
-
Ronnie,
Não vai funcionar por causa da sua condição WHERE. Como vc filtra por FLAN.CODCOLIGADA= '1' e FLAN.STATUSLAN = '1' realmente não vai trazer o que vc quer. Uma vez que na FLAN não vai existir, ao colocar esta regra os nulos serão descartados.
Talvez possa ajudar assim:
SELECT
FTB1.CODTB1FLX,
FTB1.DESCRICAO
FROM FTB1 LEFT OUTER JOIN FLAN ON (FLAN.CODCOLIGADA = FTB1.CODCOLIGADA AND FLAN.CODTB1FLX = FTB1.CODTB1FLX and FLAN.CODCOLIGADA= '1' AND FLAN.STATUSLAN = '1' )
WHERE flan.CODCOLIGADA is null or flan.CODTB1FLX is null
GROUP BY FLAN.CODTB1FLX,FTB1.CODTB1FLX,FTB1.DESCRICAO
ORDER BY 1
Marco Antônio Pinheiro / MCTS - MCC http://marcoantoniopinheiro.blogspot.com