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 :-)
  

Mensagemem Sex, 21 Set 2007 5:58 pm

Abaixo uma pérola em produção:

Código: Selecionar todos
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
dr_gori
Localização: Seattle, WA, USA

Thomas F. G
https://www.patreon.com/glufke

Mensagemem Qui, 28 Dez 2017 3:06 pm

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:

Código: Selecionar todos
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:
DanielNN
Localização: Fortaleza - CE

att,

Daniel N.N.

Mensagemem Qui, 04 Jan 2018 10:18 am

heoheoe
sim, pra garantir, coloca o DISTINCT. :-D
dr_gori
Localização: Seattle, WA, USA

Thomas F. G
https://www.patreon.com/glufke

Mensagemem Qui, 04 Jan 2018 10:29 am

E não nos esqueçamos do "rownum = 1" como cereja do bolo. :lol: :lol: :lol:
DanielNN
Localização: Fortaleza - CE

att,

Daniel N.N.



Voltar para Códigos Duvidosos

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante