Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta


Evair

Pergunta

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

  • 0

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 t1
GROUP BY t1.codlinha
ORDER 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 por CSML sistemas
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...