ORDER BY Não está funcionando
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
[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
Curtidas 0
Respostas
Ruysalles
24/05/2004
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;
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;
GOSTEI 0
Adilsond
24/05/2004
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.
GOSTEI 0
Silviomorelo
24/05/2004
Como posso verificar se este index está criado?
GOSTEI 0
Adilsond
24/05/2004
[url]http://community.borland.com/article/0,1410,29056,00.html[/url]
GOSTEI 0