ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[RESOLVIDO] Join Select

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
daniel775
Profissional
Profissional


Registrado: Quinta-Feira, 17 de Janeiro de 2013
Mensagens: 721
Localização: Amparo SP

MensagemEnviada: Qua Set 17, 2014 9:35 am    Assunto: [RESOLVIDO] Join Select Responder com Citação

Bom dia,
por favor, podem me ajudar, abaixo um select um pouco grande, porém como podemos ver, tenho 4 tabelas, o problema é minha tabela frete_piscofin b.
Pois nem todos os fretes tem pis/cofins, sendo assim se ele não encontra pis cofins para tal frete e ele não lista, o que posso fazer?

Código:

SELECT a.empresa, c.nf, a.conhec,
sum(b.val_pis) pis,
sum(b.val_cofins) cofins,
c.val_frete,
(a.val_frete)-(a.val_tot_icms_frt_d) frete_s_icm
FROM frete a, frete_piscofin b, nf_saida c, fretexnff d

--#PRECISAVA LISTAR TAMBÉM OS FRETES QUE NAO TEM PIS COFINS#--
--###TODOS OS RELACIONAMENTOS DA TABELA B ESTAO AQUI###--
WHERE b.conhec = d.conhec
AND b.conhec = a.conhec
AND b.transportador = a.cod_transpor
AND b.serie_conhec = a.ser_conhec
AND (b.nf = c.nf OR b.nf = 0)
AND b.empresa = d.empresa
AND b.empresa = c.empresa
AND a.empresa = b.empresa
--#######################################--

AND a.conhec = d.conhec
AND a.ser_conhec = d.ser_conhec
AND c.empresa = a.empresa
AND d.nf = c.nf
AND d.empresa = c.empresa
AND d.empresa = a.empresa
AND month(c.dat_emissao) = 07
AND year(c.dat_emissao) = 2014
AND a.empresa = '40'
AND c.sit = 'N'
GROUP BY a.empresa,2,3,6,7


Muito obrigado
_________________
"Água mole em pedra dura, tanto bate até q fura!", diz o filósofo...
"Essa !@#%& vai ter q funcionar", diz o programador.


Editado pela última vez por daniel775 em Qua Set 17, 2014 11:01 am, num total de 3 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Set 17, 2014 10:06 am    Assunto: Responder com Citação

Bom dia,

Qual banco de dados (e versão) você está utilizando?
O comum nesse tipo de situação seria utilizar um Left Outer Join ou simplesmente Left Join. Ex:

Código:
from TabelaA a
left join TabelaB as b
    on b.IdTabelaA = a.IdTabelaA


No exemplo acima serão retornados todos os registros de TabelaA, mesmo que não exista um registro relacionado em TabelaB.

Espero que ajude.

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-residencial-apartamento
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
daniel775
Profissional
Profissional


Registrado: Quinta-Feira, 17 de Janeiro de 2013
Mensagens: 721
Localização: Amparo SP

MensagemEnviada: Qua Set 17, 2014 10:41 am    Assunto: Responder com Citação

Imex, bom dia,

estou utilizando informix 11.50

Seguinte, como esse select fazia parte de uma procedure, resolvi tirar a tabela de piscofins do primeiro select, sendo assim inseri os dados em uma temporaria, e depois com ela fiz o LEFT JOIN com o pis/cofins,

e deu certo.

achei que ficou mais organizado.

Obrigado.

até +
_________________
"Água mole em pedra dura, tanto bate até q fura!", diz o filósofo...
"Essa !@#%& vai ter q funcionar", diz o programador.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB