Estou querendo adicionar uma coluna na minha consulta SELECT em MySQL. Eis a consulta completa:
SELECT
cedo.nome_arquivo,
cegr.grupo as grupo,
cesu.subcategoria as subcategoria,
ceba.nome_bandeira as bandeira
FROM
wt_programas_institucionais cedo
inner join wt_programas_institucionais_grupos cegr ON cegr.id = cedo.id_grupo
inner join wt_programas_institucionais_subcategorias cesu ON cesu.id = cedo.id_subcategoria
inner join wt_programas_institucionais_bandeira ceba ON ceba.id = cedo.bandeira
where ativo = 1
order By ceca.categoria ASC, grupo_download ASC, subcategoria_download ASC, nome_arquivo ASC, descricao ASC
Essa coluna seria uma numeração e se chamaria ordem. É como se fosse ROW_NUMBER em SQL Server 2008, mas ainda não encontrei uma solução que funcionasse. Como eu queria que mostrasse, por exemplo:
nome_arquivo grupo subcategoria bandeira ordem
------------- ------ ------------- --------- ------
Nome 1 One Uno 1 1
Nome 2 One Dos 1 2
Nome 3 Two Uno 1 1
Nome 4 Two Uno 1 1
Nome 5 Two Dos 1 2
Nome 6 Three Uno 1 1
Nome 7 Three Uno 1 1
Ou seja, essa numeração depende de como se apresentam categoria, grupo, subcategoria e bandeira. A cada mudança de grupo, recomeça a numeração a partir do 1.
Como eu posso fazer isso? Vi alguns exemplos mais básicos na Internet, mas por enquanto nenhum que me ajudou.
Como realizar uma ordenação quando a ordem lógica entre uma linha e outra é de forma subsequente em zigue-zague conforme abaixo:
"hora_entrada";"hora_saida";"order_by_hora_entrada";"order_needed"
"2014-12-30 10:12:00";"2014-12-30 10:34:00";1;1
"2014-12-30 10:34:00";"2014-12-30 11:20:00";2;2
"2014-12-30 11:06:00";"2014-12-31 17:03:00";3;5
"2014-12-30 11:20:00";"2014-12-30 11:21:00";4;3
"2014-12-30 11:21:00";"2014-12-30 11:06:00";5;4
"2014-12-31 17:03:00";"2015-01-02 10:06:00";6;6
"2015-01-02 09:19:00";"2015-01-02 09:25:00";7;8
"2015-01-02 10:06:00";"2015-01-02 09:19:00";8;7
Se obedecer a ordem "hora_entrada", acima estará correto conforme a coluna 3, mas preciso da ordem hora_entrada > hora_saida > hora_entrada (próxima linha), considerando que a hora_saida de uma linha é igual a hora_entrada da linha a seguir, conforme coluna 4. Verifique que a ordem é bem diferente.
OBS: esses erros ocorreram quando entre a entrada e a saída pode haver divergências no horário de verão da tramitação.
Posso ordenar de forma direta ou utilizando row_number?