В Elixir с Ecto можно объединить две разные таблицы (на одном хосте), принадлежащие двум разным базам данных.
В этом запросе есть две базы данных с именами cloud
и cloud_usage
.
Когда я выполняю запрос, какое репо мне следует использовать?
Billing.CloudUsage.Repo.all(query)
or
Billing.Cloud.Repo.all(query)
query = from cucu in "cloud_usage.cloud_usage",
inner_join: cv in "cloud.volumes", on: cucu.usage_id == cv.id,
where: cucu.account_id == ^account_id,
where: cucu.usage_id == 6,
where: like(cucu.description, ^vol_description),
where: cucu.start_date >= ^start_datetime,
where: cucu.start_date <= ^end_datetime,
group_by: cucu.usage_id,
group_by: cucu.zone_id,
select: {cucu.usage_id, cucu.zone_id, cucu.size, sum(cucu.raw_usage)}
result = Billing.CloudUsage.Repo.all(query)
Когда я вызываю функцию, я получаю сообщение об ошибке
** (Mariaex.Error) (1146): Table 'cloud_usage.cloud_usage.cloud_usage' doesn't exist
Я знаю, почему это произошло. Но если я использую Billing.Cloud.Repo.all(query)
, я думаю, что вряд ли смогу получить данные в таблице cloud_usage.cloud_usage
. Наоборот
Ссылка:
MySQL -- соединение между таблицами в двух разных базах данных?
, on: cucu
, а не, on cucu
. - person José Valim   schedule 27.05.2015{}
в редакторе. Вы должны публиковать только соответствующие части кода, а не ненужные комментарии. Если вы хотите получить хорошие ответы, вы должны сделать это как можно проще для читателей. - person Patrick Oscity   schedule 27.05.2015