Ответ в теме: Косвенная рекурсия не работает

      Комментарии к записи Ответ в теме: Косвенная рекурсия не работает отключены
#2463

Дальше не совсем понятно. Вы пишите

Ищутся значения в списке из записи бд (вида А/Б/В/Г), где В равна значению из списка в вызове

Однако, фактически я вижу, что в записи БД параметры из списка вызова стоят на позиции А.

При этом последнее значение должно быть уникальным – Г.

Не понятно какая уникальность имеется ввиду (среди чего). Если имеется ввиду уникальность среди результатов – то необходимо выбрать все нужные элементы, а затем отфильтровать их еще раз с требованием уникальности. Если же имеется ввиду уникальность среди исходных данных (полученных прямо из БД) – то фильтровать надо до обработки (сразу после извлечения данных из БД).

Кроме того, что не ясно, выборку нужных данных можно организовать следующим образом:

filter_buses_model(_Buses, [], []):-!.
filter_buses_model(Buses, [(HeadBus, Count)|RepeatBusesTail], Requirement):-
  findall(HeadBus/Count/C/D, member(HeadBus/Count/C/D, Buses), HeadRequirementBuses), 
  filter_buses_model(Buses, RepeatBusesTail, RequirementTail),
  append(HeadRequirementBuses, RequirementTail, Requirement).