Видите ли вы возможность сгруппировать эти результаты по location_schedule.id
?
from(
ta in TerminalApplication,
where: [device_id: ^terminal_id],
join: d in assoc(ta, :device),
join: ou in assoc(d, :organization_unit),
left_join: ls in LocationSchedule,
on: ou.id == ls.organization_unit_id,
select: %{terminal_application: ta, location_schedule: ls}
)
ИЛИ:
from(
ls in LocationSchedule,
join: ou in assoc(ls, :organization_unit),
join: d in assoc(ou, :devices),
right_join: ta in assoc(d, :terminal_applications),
where: ta.device_id == ^terminal_id,
select: %{terminal_application: ta, location_schedule: ls}
)
Эти запросы возвращают тот же результат, мне нужно получить LocationSchedule и это TerminalApplications.
Связь выглядит следующим образом:
TerminalApplication (device_id)
BELONGS TO
Device (organization_unit_id)
BELONGS TO
Organization
HAS ONE
LocationSchedule (organization_unit_id)