【问题标题】:Join 3 tables using ecto query使用 ecto 查询连接 3 个表
【发布时间】:2023-04-09 10:14:01
【问题描述】:

这是Postgres的场景

CREATE TABLE "hearings" (
  "hearing_id" int4 NOT NULL,
  "date" timestamp NOT NULL,
  "time" varchar(32),
  "committee" varchar(255),
  "summary" text,
);


CREATE TABLE "categories" (
  "category_id" int4 NOT NULL,
  "description" varchar(255) NOT NULL,
  "type" varchar(32) DEFAULT 'normal' NOT NULL,
);


CREATE TABLE "hearing_category_link" (
  "hearing_id" int4 NOT NULL,
  "category_id" int4 NOT NULL,
);

Postgres 查询:

SELECT * FROM
(hearings LEFT JOIN hearing_category_link ON hearings.hearing_id = hearing_category_link.hearing_id )
LEFT JOIN categories ON hearing_category_link.category_id = categories.category_id

到目前为止,我只能将当前查询与一个表连接起来

from h in "hearings", join: hl in "hearing_category_link", on: hl.hearing_id == h.hearing_id

但我想使用 ecto 加入这 3 个表并获得结果(动态会很棒)。 Another similar question but with postgres

【问题讨论】:

    标签: sql select join elixir ecto


    【解决方案1】:

    你只需要写2个连接:

    from hearing in "hearings",
      join: hcl in "hearing_category_link", on: hcl.hearing_id == hearing.id,
      join: category in "categories", on: hcl.category_id == category.id
    

    【讨论】:

      猜你喜欢
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 2015-12-11
      • 1970-01-01
      相关资源
      最近更新 更多