Мало входных данных в части хранения 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. Естественно добавляются еще доп поля (наличие обратного маршрута и т.п.) . Я просто хотел показать (как пример) - организацию выборки данных и их хранение.