Fórum FAZER JOIN SEM DESCONSIDERAR RESULTADOS NULL #602689
29/05/2019
0
Bom dia, pessoal.
Ainda sou noob em sql e estou precisando muito desse select pra colocar no PowerBI.
Quando faço o select da tabela (quase) inteira no banco, o resultado é de 466 linhas
Quando refino o select, os resultados caem pra 413 linhas. Provavelmente os resultados null estão sendo desconsiderados
select
Já tentei colocar entre parenteses (por exemplo)
mas não funciona...
Dei uma pesquisada no fórum e no google e vi muita gente usando outer join, left join e tal..mas não sei se seria esse o caso e se for, qual seria o ideal.
Por favor, me deem essa força!! :D
Obrigado!
Ainda sou noob em sql e estou precisando muito desse select pra colocar no PowerBI.
Quando faço o select da tabela (quase) inteira no banco, o resultado é de 466 linhas
select * from MAN_ORDEM_SERVICO where nr_seq_wheb is null;
Quando refino o select, os resultados caem pra 413 linhas. Provavelmente os resultados null estão sendo desconsiderados
select
os.ie_status_ordem,
os.nr_sequencia,
pf.nm_pessoa_fisica,
plan.ds_grupo_planej,
os.ie_prioridade,
local.ds_localizacao,
equip.ds_equipamento,
os.dt_ordem_servico,
os.dt_atualizacao,
custo.ds_centro_custo, -- (puxar nome)
os.ds_dano_breve,
os.dt_fim_real
from
man_ordem_servico os, pessoa_fisica pf, man_localizacao local,
man_equipamento equip, centro_custo custo, man_grupo_planejamento plan
where
os.cd_pessoa_solicitante = pf.cd_pessoa_fisica
and os.nr_seq_localizacao = local.nr_sequencia
and os.nr_seq_equipamento = equip.nr_sequencia
and os.cd_centro_custo_os = custo.cd_centro_custo
and os.nr_grupo_planej = plan.nr_sequencia
and nr_seq_wheb is null;
Já tentei colocar entre parenteses (por exemplo)
(os.nr_seq_localizacao = local.nr_sequencia or os.nr_seq_localizacao is null)
Dei uma pesquisada no fórum e no google e vi muita gente usando outer join, left join e tal..mas não sei se seria esse o caso e se for, qual seria o ideal.
Por favor, me deem essa força!! :D
Obrigado!
Igor Alvim
Curtir tópico
+ 0
Responder
Post mais votado
30/05/2019
Fala Igor. Você está tentando um relacionamento entre as tabelas através de "WHERE". Mas a forma correta de relacionar tabelas é com JOIN. Neste link você pode conferir a documentação da Oracle sobre SELECT utilizando JOIN, com exemplos: https://www.oracle.com/technetwork/pt/articles/sql/tipos-de-joins-padroes-sql-2501277-ptb.html
Renato Dias
Responder
Gostei + 1
Mais Posts
01/06/2019
Igor Alvim
Fala Igor. Você está tentando um relacionamento entre as tabelas através de "WHERE". Mas a forma correta de relacionar tabelas é com JOIN. Neste link você pode conferir a documentação da Oracle sobre SELECT utilizando JOIN, com exemplos: https://www.oracle.com/technetwork/pt/articles/sql/tipos-de-joins-padroes-sql-2501277-ptb.html
Obrigado Renato!
Fazia tempo que não mexia com SQL, aí na minha empresa inventaram de colocar BI e eu peguei essa bucha.
Muito obrigado!
Vou voltar a estudar a documentação pra pegar direitinho o jeito.
Abraço!
Responder
Gostei + 0
01/06/2019
Kleber Santos
Na linha 18 eu presumi que pode ter OS sem equipamento.
Select
os.ie_status_ordem,
os.nr_sequencia,
pf.nm_pessoa_fisica,
plan.ds_grupo_planej,
os.ie_prioridade,
local.ds_localizacao,
equip.ds_equipamento,
os.dt_ordem_servico,
os.dt_atualizacao,
custo.ds_centro_custo, -- (puxar nome)
os.ds_dano_breve,
os.dt_fim_real
from
man_ordem_servico os
inner join pessoa_fisica pf on (os.cd_pessoa_solicitante = pf.cd_pessoa_fisica)
inner join man_localizacao local on (os.nr_seq_localizacao = local.nr_sequencia)
left outer join man_equipamento equip on (os.nr_seq_equipamento = equip.nr_sequencia)
inner join centro_custo custo on (os.cd_centro_custo_os = custo.cd_centro_custo)
inner join man_grupo_planejamento plan on (os.nr_grupo_planej = plan.nr_sequencia)
where
nr_seq_wheb is null;
Responder
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)