2015-06-21 4 views
0

У меня есть таблица, которая в основном описывает маршрут автобуса. В таблице указаны все остановки определенного маршрута.Получение упорядоченного подмножества записей

This SQLFiddle показывает пример. Данные показывают поток в одном направлении, но маршрут может также находиться в другом направлении.

Мне нужно получить подмножество этого маршрута (или все его) в зависимости от начальной и конечной станций. Так, например, я мог бы этим:

A -> M (subset would be B -> L) 
A -> K (subset would be B -> J) 
C -> H (subset would be D -> G) 
I -> M (subset would be J -> L) 

Однако, если направление от, например, Н -> В, подмножество необходимо будет G -> С.

В столбце Последовательность для этой цели.

Есть ли простой и простой способ сделать это, используя только SQL?

ответ

1

Предполагая, что я понимаю ваш вопрос, кажется довольно простым.
Чтобы получить подмножество просто использовать between...and оператор на sequence колонке:

SELECT stop_from, stop_to 
FROM routes 
WHERE sequence BETWEEN 2 AND 11 
ORDER BY sequence 

Для того, чтобы получить подмножество в противоположном направлении, как раз заказ по алфавиту, и выбрать stop_to как stop_from и stop_from как stop_to:

SELECT stop_to As stop_from, stop_from As stop_to 
FROM routes 
WHERE sequence BETWEEN 3 AND 7 
ORDER BY sequence DESC 

See fiddle here

Смежные вопросы