Fórum ORDER BY Não está funcionando #234119

24/05/2004

0

Estou usando a seguinte instrução SQL dentro do TSQLQuery:

[size=9:6559027bfb]SELECT
SAV003.NMELEICAO, SAV006.IDNUMERO, Sum(SAV006.VOTO) AS SOMADEVOTO,
SAV001.MATRICULA, SAV001.DIGITO, SAV001.NOME, SAV001.APELIDO,
SAV001.DTADMISSAO, SAV001.DTNASCIMENTO
FROM
SAV006,
SAV003 INNER JOIN SAV001 ON SAV003.IDELEICAO = SAV001.IDELEICAO
GROUP BY
SAV001.IDELEICAO, SAV003.NMELEICAO, SAV006.IDNUMERO,
SAV001.IDNUMERO, SAV001.MATRICULA, SAV001.DIGITO, SAV001.NOME,
SAV001.APELIDO, SAV001.DTADMISSAO, SAV001.DTNASCIMENTO
HAVING
(SAV001.IDELEICAO = :PAR_ELEICAO) AND (SAV001.IDNUMERO = SAV006.IDNUMERO)
ORDER BY
3 DESC, 8 DESC, 9 DESC;
[/size:6559027bfb]

Quando eu executo o TClientDataSet o mesmo ignora o ORDER BY, alguem sabe me dizer o porque ou me dar uma dica do que fazer??

Obrigado


Silviomorelo

Silviomorelo

Responder

Posts

24/05/2004

Ruysalles

Para você utilizar o Order By vc tem que especificar no nome do campo e não um número como vc fez. Imagino que você gostaria de ter ordenado pelo 3º, 8º e 9º campo, portanto a sua consulta ficaria:

SELECT
SAV003.NMELEICAO, SAV006.IDNUMERO, Sum(SAV006.VOTO) AS SOMADEVOTO,
SAV001.MATRICULA, SAV001.DIGITO, SAV001.NOME, SAV001.APELIDO,
SAV001.DTADMISSAO, SAV001.DTNASCIMENTO
FROM
SAV006,
SAV003 INNER JOIN SAV001 ON SAV003.IDELEICAO = SAV001.IDELEICAO
GROUP BY
SAV001.IDELEICAO, SAV003.NMELEICAO, SAV006.IDNUMERO,
SAV001.IDNUMERO, SAV001.MATRICULA, SAV001.DIGITO, SAV001.NOME,
SAV001.APELIDO, SAV001.DTADMISSAO, SAV001.DTNASCIMENTO
HAVING
(SAV001.IDELEICAO = :PAR_ELEICAO) AND (SAV001.IDNUMERO = SAV006.IDNUMERO)
ORDER BY
Sum(SAV006.VOTO) DESC, SAV001.DTADMISSAO DESC, SAV001.DTNASCIMENTO DESC;


Responder

Gostei + 0

25/05/2004

Adilsond

SELECT SAV003.NMELEICAO,
       SAV006.IDNUMERO,
       SAV001.MATRICULA,
       SAV001.DIGITO,
       SAV001.NOME,
       SAV001.APELIDO,
       SAV001.DTADMISSAO,
       SAV001.DTNASCIMENTO,
       SUM(SAV006.VOTO) AS SOMADEVOTO
FROM SAV006,
     SAV003,
     SAV001
WHERE SAV001.IDELEICAO = SAV003.IDELEICAO
  AND SAV001.IDNUMERO = SAV006.IDNUMERO
  AND SAV003.IDELEICAO = :PAR_ELEICAO
GROUP BY SAV003.NMELEICAO,
         SAV006.IDNUMERO,
         SAV001.MATRICULA,
         SAV001.DIGITO,
         SAV001.NOME,
         SAV001.APELIDO,
         SAV001.DTADMISSAO,
         SAV001.DTNASCIMENTO
ORDER BY 9 DESC,
         7 DESC,
         8 DESC


Com relação ao que nosso colega ruysalles informou sobre o order by, ele está equivocado. O order by aceita ser informado através do número da coluna.
No SQL acima voce está ordenando:

Primeiro pelo SUM(SAV006.VOTO) em order decrecente,
Depois pela SAV001.DTADMISSAO em order decrecente,
Depois pela SAV001.DTNASCIMENTO em order decrecente

Verifique se voce não criou índices para o ClientDataSet, pois caso isto seja verdadeiro ele obedecerá a ele.


Responder

Gostei + 0

25/05/2004

Silviomorelo

Como posso verificar se este index está criado?


Responder

Gostei + 0

25/05/2004

Adilsond

[url]http://community.borland.com/article/0,1410,29056,00.html[/url]


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar