Evair Postado Abril 9, 2007 Denunciar Share Postado Abril 9, 2007 Bom dia, boa tarde ou boa noite a todosEste é meu primeiro post neste forum, então já peço desculpas por qualquer erro.A questão é a seguinte:Tenho uma tabela com horários de ônibus chamada horarios_completosos campos desta tabela são:codlinha -> é o código da linha de ônibus (INT);dia -> é o tipo de dia (INT) 1 para dias úteis, 2 para sábados e 3 para domingos;sentido -> é o sentido da viagem (INT) que pode ser 1 centro ao bairro e 2 bairro ao centro;atend -> é um diferencial que indica se a viagem naquele horário faz um percurso diferente (CHAR 1);hor -> é o horário de partida da viagem (TIME).Agora preciso realizar uma consulta por codlinha, dia e sentido ordenado pelo horário (hor) mas que me retorne da seguinte maneira:na primeira coluna os horários menores que 05h;na segunda coluna os horários entre 05h e 05h59min;....na última coluna os horários entre 24h e 24h59.Já consegui fazer isso no PHP, porém utilizo vários loops e várias consultas.Agora gostaria de saber se posso fazer tudo isso numa só consulta.Se alguém souber fico muito agradecido.Até mais Link para o comentário Compartilhar em outros sites More sharing options...
0 CSML sistemas Postado Abril 11, 2007 Denunciar Share Postado Abril 11, 2007 (editado) Algo assim:SELECT t1.codlinha, (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 01:00:00')) AND (t2.hor < TIME('1999-01-01 05:00:00'))) AS '1<=hor<5', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 05:00:00')) AND (t2.hor < TIME('1999-01-01 06:00:00'))) AS '5<=hor<5', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 06:00:00')) AND (t2.hor < TIME('1999-01-01 07:00:00'))) AS '6<=hor<7', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 07:00:00')) AND (t2.hor < TIME('1999-01-01 08:00:00'))) AS '7<=hor<8', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 08:00:00')) AND (t2.hor < TIME('1999-01-01 09:00:00'))) AS '8<=hor<9', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 09:00:00')) AND (t2.hor < TIME('1999-01-01 10:00:00'))) AS '9<=hor<10', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 10:00:00')) AND (t2.hor < TIME('1999-01-01 11:00:00'))) AS '10<=hor<11', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 11:00:00')) AND (t2.hor < TIME('1999-01-01 12:00:00'))) AS '11<=hor<12', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 12:00:00')) AND (t2.hor < TIME('1999-01-01 13:00:00'))) AS '12<=hor<13', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 13:00:00')) AND (t2.hor < TIME('1999-01-01 14:00:00'))) AS '13<=hor<14', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 14:00:00')) AND (t2.hor < TIME('1999-01-01 15:00:00'))) AS '14<=hor<15', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 15:00:00')) AND (t2.hor < TIME('1999-01-01 16:00:00'))) AS '15<=hor<16', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 16:00:00')) AND (t2.hor < TIME('1999-01-01 17:00:00'))) AS '16<=hor<17', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 17:00:00')) AND (t2.hor < TIME('1999-01-01 18:00:00'))) AS '17<=hor<18', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 18:00:00')) AND (t2.hor < TIME('1999-01-01 19:00:00'))) AS '18<=hor<19', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 19:00:00')) AND (t2.hor < TIME('1999-01-01 20:00:00'))) AS '19<=hor<20', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 20:00:00')) AND (t2.hor < TIME('1999-01-01 21:00:00'))) AS '20<=hor<21', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 21:00:00')) AND (t2.hor < TIME('1999-01-01 22:00:00'))) AS '21<=hor<22', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 22:00:00')) AND (t2.hor < TIME('1999-01-01 23:00:00'))) AS '22<=hor<23', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 23:00:00'))) AS '23<=hor<24', (SELECT COUNT(*) FROM horarios_completos t2 WHERE (t1.codlinha = t2.codlinha) AND (t2.hor >= TIME('1999-01-01 00:00:00')) AND (t2.hor < TIME('1999-01-01 01:00:00'))) AS '24<=hor<1'FROM horarios_completos t1GROUP BY t1.codlinhaORDER BY t1.codlinha[/codebox](nem percebi que usei "t2" em tudo quanto é coluna... corrige aí!) B) ----se for ganhar uma grana com isso, lembra do amigo! :D Editado Abril 11, 2007 por CSML sistemas Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Evair
Bom dia, boa tarde ou boa noite a todos
Este é meu primeiro post neste forum, então já peço desculpas por qualquer erro.
A questão é a seguinte:
Tenho uma tabela com horários de ônibus chamada horarios_completos
os campos desta tabela são:
codlinha -> é o código da linha de ônibus (INT);
dia -> é o tipo de dia (INT) 1 para dias úteis, 2 para sábados e 3 para domingos;
sentido -> é o sentido da viagem (INT) que pode ser 1 centro ao bairro e 2 bairro ao centro;
atend -> é um diferencial que indica se a viagem naquele horário faz um percurso diferente (CHAR 1);
hor -> é o horário de partida da viagem (TIME).
Agora preciso realizar uma consulta por codlinha, dia e sentido ordenado pelo horário (hor) mas que me retorne da seguinte maneira:
na primeira coluna os horários menores que 05h;
na segunda coluna os horários entre 05h e 05h59min;
....
na última coluna os horários entre 24h e 24h59.
Já consegui fazer isso no PHP, porém utilizo vários loops e várias consultas.
Agora gostaria de saber se posso fazer tudo isso numa só consulta.
Se alguém souber fico muito agradecido.
Até mais
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados