Мало входных данных в части хранения SQL.
Если, например, организовать вашу структуру как список таблиц (id - первичные ключи):
vegetables(id, name) овощи. Записи в таблице:(1, 'картофель')
points(id, name) пункты перевозок. Записи в таблице: (1, 'Минск'), (2, 'Москва'), (3, 'Пермь'), (4, 'Тюмень')
deliveries(vegetable, route, name). Записи в таблице: (1, 1, 'Поставка картошки из Белоруссии N 120'). Поля имеют внешние ключи на vegetables и routes
routes (id, StartPoint, StopPoint). Записи в таблице: (1, 1, 4). Поля имеют внешние ключи на points
pathes(route,fromPoint, toPoint). Записи в таблице: (1,1,2) , (1,2,3) (1,3,4). Поля имеют внешние ключи на points и routes.
select distinct vegetables.name
from vegetables, deliveries, routes, pathes
where
deliveries.vegetable = vegetables.id and
routes.id=deliveries.route and
pathes.route=deliveries.route and
exists (
select * from pathes, points
where pathes.route=route.id and
from pathes.fromPoint=points.id and points.Name='Москва') and
exists (
select * from pathes, points
where pathes.route=route.id and
from pathes.toPoint=points.id and points.Name='Тюмень')
выдаст овощи, у которых есть поставка, пролегающая через 2 указанных города .
P.S. Естественно добавляются еще доп поля (наличие обратного маршрута и т.п.) . Я просто хотел показать (как пример) - организацию выборки данных и их хранение.