从两个表中选择数据,但在地图内返回动态选择的字段

时间:2018-03-12 15:45:04

标签: sql select join elixir ecto

我有一个查询,它成功地连接了具有正确条件的表,但它没有返回地图中的joinee表选择数据。有没有办法可以在地图中获取数据,如

from t1 in "Table1",
   join: t2 in "Table2", on: t1.t2_id == t2.id,
   select: map(t1, [:id, {"Table2", [:id]}])

在上面的查询运行时应该返回[%{"id": 1, "Table2": %{"id": 1}}]之类的内容,但它只会返回[%{"id": 1}]

注意:有点类似的问题 How to select data from two tables in Ecto但它没有在地图中返回。

1 个答案:

答案 0 :(得分:1)

这就是你应该这样做的方式

from t1 in "Table1",
 join: t2 in "Table2", on: t1.t2_id == t2.id,
 select: map(t1, [:id]),
 select_merge: %{Table2: map(t2, [:id])}

Credit goes to elixirform用户