Я пишу приложение, которое моделирует маршруты поездов, которые хранятся в таблице базы данных [TrainStop] следующим образом:
TrainServiceId
StationCode
StopIndex
IsEnabled
Таким образом, данный поезд следует по маршруту и состоит из нескольких строк, где StopIndex указывает порядок. Проблема, которую я пытаюсь решить, состоит в том, чтобы сказать, к каким станциям пользователь может добраться с данной начальной станции на основе доступных услуг поезда. Это было бы относительно просто, НО также возможно отключить остановки, что означает, что пользователь не может добраться ни к каким пунктам назначения после этой остановки для этого поезда. Также возможно, что несколько поездов на разных маршрутах могут совместно использовать станции, например:
Поезд Сервис 1: A, B, C, D, E
Поезд Сервис 2: P, Q, B, C, D, R
Таким образом, если пользователь находится в точке B, он может перейти к C, D, E и R, но если станция D отключена в любой услуге, он может добраться только до C. Если станция E отключена в службе 1, пользователь может получить доступ к C, D и R.
Решение этой проблемы довольно просто в C #, но мне интересно, можно ли ее элегантно и эффективно решить в SQL? Я изо всех сил пытаюсь найти способ для каждого маршрута исключать станции за строкой, которая не включена.