2015-05-27 3 views
3

В Elixir, с Ecto, возможно объединение двух разных таблиц (в одном хосте), принадлежащих двум различным базам данных.Присоединение к двум таблицам относится к двум базам данных в Elixir Ecto

Есть две базы данных, называемые cloud и cloud_usage в этом запросе

Когда я выполнить запрос, который Repo я должен использовать?

Billing.CloudUsage.Repo.all(query)

или

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 -- join between tables in 2 different databases?

+3

Пожалуйста, укажите конкретную ошибку, которую вы получаете. –

+1

В отличие от сайтов на форуме, мы не используем «Спасибо», или «Любая помощь оценена», или подписи на [so]. См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -отправлено-от-сообщений). BTW, это «Спасибо заранее», а не «Спасибо в продвинутом». –

+1

Пожалуйста, укажите ошибку, которую вы получаете, и версию Ecto. Также обратите внимание, что у вас есть опечатка в вашем запросе. be ', on: cucu', а не', on cucu'. –

ответ

4

Ваш код является совершенным. Это ошибка в Ecto. Я исправил его в мастер, если вы хотите попробовать. :)

+0

José, это сработало! Действительно оцените вашу работу! Чтобы попробовать мастер-экто, мне нужно для изменения файла 'mix.exs'. {: ecto, github:" elixir-lang/ecto "},' –

Смежные вопросы