Группировка Ecto Query - PullRequest
1 голос
/ 26 мая 2020

Видите ли вы возможность сгруппировать эти результаты по 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)
...