[firebase-br] Ordenação gerando resultados diferentes
    Alexandre Kogut 
    kogut em kogumelo.com.br
       
    Seg Dez 25 14:35:59 -03 2006
    
    
  
Caríssimos:
Hoje me deparei com um problema estranho, e repasso apenas para saber se é assim mesmo, pois já arrumei uma solução. 
Imaginem, num exemplo simplicado, uma tabela TURMA com os campos CÓDIGO, SALA e ATIVA, não importa muito o formato de cada um, apenas que CÓDIGO é a primary key - os demais campos permitem repetição
CODIGO SALA ATIVA
1            1            1
2            1            1
3            1            1
4            1            0 
5            2            1
6            2            0
7            1            0
8            1            1
9            2            1
10          1            0
Se eu faço:   SELECT CODIGO,SALA FROM TURMA ORDER BY SALA,  o resultado será:
CODIGO    SALA
1                1
2                1
3                1
4                1
7                1
8                1
10              1
5                2
6                2
9                2
Mas se eu apenas acrescento o campo ATIVA no select e faço:  SELECT CODIGO, SALA, ATIVA  FROM TURMA ORDER BY SALA,  o resultado muda para:
CODIGO    SALA    ATIVA
4                1            0
7                1            0
10              1            0
1                1            1
2                1            1
3                1            0
8                1            1
6                2            0
5                2            1
9                2            1
Pelo fato de o campo SALA permitir valores repetidos, eu já esperava que a ordem no resultado do SELECT pudesse variar em função da quantidade de registros a ser ordenada, e isso estaria ok pra mim, mas nunca poderia imaginar que a ordem também seria influenciada pela quantidade de colunas do SELECT! Se eu quiser saber em que posição do select foi apresentado o código 7, no primeiro caso a resposta seria Linha 5 e no segundo Linha 2.
Para garantir a ordem, a solução foi acrescentar CODIGO na cláusula ORDER BY. Desta forma: 
    SELECT CODIGO, SALA FROM TURMA ORDER BY SALA,CODIGO 
    SELECT CODIGO, SALA,ATIVA FROM TURMA ORDER BY SALA,CODIGO 
retornará sempre na mesma ordem.
Abraço a todos heróicos membros dessa lista, com votos de Sucesso em 2007.
Alexandre Kogut
Kogumelo Informática Ltda
(21) 2255-4417
    
    
Mais detalhes sobre a lista de discussão lista