FAZER JOIN SEM DESCONSIDERAR RESULTADOS NULL
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
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
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
Clique aqui para fazer login e interagir na Comunidade :)