5

Elixir では、Ecto を使用して、異なる 2 つのデータベースに属する (同じホスト内の) 2 つの異なるテーブルを結合できます。

このクエリにはcloudとという 2 つのデータベースがあります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 -- 2 つの異なるデータベースのテーブルを結合しますか?

4

1 に答える 1

7

あなたのコードは完璧です。これは Ecto のバグです。試してみたい場合は、マスターで修正しました。:)

于 2015-05-27T18:15:24.297 に答える