Select Distinct meio estranho mas funcionou...

Delphi

08/09/2005

Olá Galera, é o seguinte. Eu precisava de um SQL que me retorna-se somente os registros de uma tabela que tivesse registros em outra tabela, por exemplo, vendedores que tivessem vendas, porém sem repetição de vendedores. Eu tentei de várias formas, com join e tal, o problema é que sempre repetia o nome do vendedor. Ai procurei aqui no fórum e achei um código que deu certo, mas eu achei ele tão estranho, não sei, mas pode ser que ele fique meio pesado com muito registros, vejam ai e falem o que acham ou se tem outra forma de fazer esse select que preciso:
Obrigado
SELECT DISTINCT Vendedores.CODIGO_VENDEDOR, Vendedores.NOME_VENDEDOR FROM Vendedores WHERE Vendedores.CODIGO_VENDEDOR IN (SELECT DISTINCT Vendas.CODIGO_VENDEDOR FROM Vendas) ORDER BY VENDEDORES.NOME_VENDEDOR

Ps. Esse Segundo DISTINCT foi posto por minha conta, não sei se fiz errado ou certo, mas pensei em minimizar o número de registros nesse select.


Lucianobarreto

Lucianobarreto

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

08/09/2005

Assim não funciona?

SELECT Vendedores.CODIGO_VENDEDOR, Vendedores.NOME_VENDEDOR 
FROM Vendedores INNER JOIN Vendas 
ON Vendedores.CODIGO_VENDEDOR = Vendas.CODIGO_VENDEDOR 
GROUP BY Vendedores.CODIGO_VENDEDOR, Vendedores.NOME_VENDEDOR
ORDER BY Vendedores.NOME_VENDEDOR



GOSTEI 0
Lucianobarreto

Lucianobarreto

08/09/2005

Funciona também!
Valeu!!!
Mas me diz uma coisa, o que eu pensava sobre o codigo que coloquei lá está certo? Ele ficaria meio pesado?


GOSTEI 0
Lucianobarreto

Lucianobarreto

08/09/2005

Bom.. testei aqui no ISQLTOOl e deu certo, porém quando eu coloco no Delphi e tento executar ele dá o seguinte erro:

[b:43f3479b93]INVALID EXPRESSION IN THE SELECT LIST(NOT CONTAINED IN EITHER AN AGGREGATE FUNCTION OR THE GROUP BY CLAUSE)[/b:43f3479b93]

Um dos codigos que eu estava tentando dava esse mesmo erro...
O que pode ser?

Estou usando Banco FB e ZEOSLIB...


GOSTEI 0
Gandalf.nho

Gandalf.nho

08/09/2005

A SQL original que vc postou certamente seria mais pesada por usar uma select para alimentar a cláusula WHERE. Quanto ao erro que vc postou, foi com o meu exemplo tb? Os nomes das suas tabelas e campos estão em maiúsculas ou não?


GOSTEI 0
Lucianobarreto

Lucianobarreto

08/09/2005

O seu código no ISQL funcionou legal. Sobre as Maiusculas e Minusculas eu conferi e está correto.
Pode ser algo da biblioteca? Tipo a Zeos nao dar suporte a isso?


GOSTEI 0
Martins

Martins

08/09/2005

O seu código no ISQL funcionou legal. Sobre as Maiusculas e Minusculas eu conferi e está correto. Pode ser algo da biblioteca? Tipo a Zeos nao dar suporte a isso?

Pode ser, testei o código da gandalf.nho no ISQL e funfou aqui tb, vc usa os componentes ZeosLib para acesso ?

Não utilizo esses comp. não, nunca precisei.


GOSTEI 0
Lucianobarreto

Lucianobarreto

08/09/2005

Então, o codigo cachorro que eu coloquei lá com começo está certo aqui.. o codigo que ela passou nao deu certo... mas tudo bem.. vou vendo ao que dá.. mas se tiverem algo mais me falem...


GOSTEI 0
POSTAR