Tabela sobrando no SQL

Este forum é dedicado a códigos errados que se encontram por aí, ou seja, coisas que não se deve fazer de jeito nenhum! Não coloque neste forum dúvidas! (apenas situações bizarras do nosso dia a dia :-)
Responder
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Abaixo uma pérola em produção:

Selecionar tudo

select a.rowid,
          a.nome as Area, 
          a.area_id as CodArea, 
          f.nopessoa as Nome, 
          f.cdpessoafunc as CodNome,
          decode(a.ativo,'S','Sim','N','Não') as Ativo
   from funcionarios f, area a,
        solicitantes s
   where a.responsavel = f.cdpessoafunc
   group by a.rowid, a.nome, a.area_id, f.nopessoa, f.cdpessoafunc, a.ativo
   order by 2;
Erros:
* A tabela "solicitantes" não é usado em nada! Apenas cria um produto cartesiano!
* Para solucionar o problema, foi colocado um GROUP BY, pra eliminar o produto cartesiando

Enviado por Rodrigo Nascimento - parceria

:-D
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Post é antigo mas problema é rotineiro.

Vez ou outra, além desses "group by" para remover falhas de consulta(ou modelagem do banco), vejo coisas tipo:

Selecionar tudo

SELECT DISTINCT
...
FROM
...
GROUP BY ....;
Acho que pensam que GROUP BY com DISTINCT dá reforço em dobro para as inconsistências e integridade do banco.
:mrgreen:
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

heoheoe
sim, pra garantir, coloca o DISTINCT. :-D
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

E não nos esqueçamos do "rownum = 1" como cereja do bolo. :lol: :lol: :lol:
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes