如何使用 Ecto 获取原始 sql 返回的数据库值

田治弘

我做了一个复杂的SQL。所以我使用原始查询。我已经提到https://stackoverflow.com/questions/36042888/raw-sql-with-ecto但我仍然堆叠。

query = "select item_id, sum(unit) amount from sales where item_id = ? "
result = Ecto.Adapters.SQL.query(Repo, query, [item_id])

但是我不知道如何检索像 Ecto 结果这样的数据库值。我希望我得到像 Map 这样的值,无论是键还是值。

结果是打击。

%Mariaex.Result{columns: ["item_id", "amount"], connection_id: nil, last_insert_id: nil, num_rows: 1, rows: [[42, #Decimal<4>]]}, :get, [])

我应该自己检索还是有通用和智能的方法?希望最后的结果是 Phoenix 模板 html 的输出。

我正在尝试像这样将结果值更改为 Map 。

item_result =
  {:ok, result} ->
    rows = result.get(:rows)
    columns = result.get(:columns)
    Enum.zip(columns, rows)

但是对于仙药新手来说,难度很大。

田治弘

我想出了如何使用 Ecto 处理原始 SQL。我只是把问题分成小部分。

(1)sum()在 mysql 的情况下返回 Decimal 值。

query = "select item_id, sum(unit) amount from sales where item_id = ? "
result = Ecto.Adapters.SQL.query(Repo, query, [item_id])

=> 我需要将#Decimal转换#Integer在 Elixir 中使用 Decimal.to_integer/1。

(2)Ecto.Adapters.SQL.query返回 {:ok, results}

=> 我应该收到{:ok, results}作为返回值。

(3) 检索:columns:rows

columns = results.columns
rows = results.rows

(4) 将这些值 colums 和 rows 放在一起

Enum.zip(columns, rows) |> Enum.into(%{})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Laravel中的原始查询从SQL数据库获取特定列

来自分类Dev

如何查看为Ecto.Query生成的原始SQL?

来自分类Dev

带有Ecto的原始SQL

来自分类Dev

如何使用C ++获取SQL数据库的总大小

来自分类Dev

如何使用C ++获取SQL数据库的总大小

来自分类Dev

在 sql 命令中使用时,会话值未从数据库获取任何数据

来自分类Dev

使用原始 SQL 更新数据库中的字段?

来自分类Dev

我可以让Ecto记录原始SQL吗?

来自分类Dev

如何在php中获取sql数据库查询的最大值

来自分类Dev

SQL:如何忽略数据库中的NULL或0值并返回行?

来自分类Dev

使用PHP查询从SQL数据库为Sagepay返回值

来自分类Dev

使用原始sql时,如何跟踪数据库架构更改?

来自分类Dev

如何测试多数据库Elixir(Phoenix,Ecto)应用

来自分类Dev

如何从Elixir Ecto检测数据库连接问题?

来自分类Dev

如何从Elixir Ecto检测数据库连接问题?

来自分类Dev

如何在jsonstore Worklight 6.2中以Json格式从数据库获取或返回值?

来自分类Dev

使用ecto创建MSSQL数据库时出错

来自分类Dev

如何获取变量的原始值?

来自分类Dev

如何获取原始流量数据

来自分类Dev

如何通过Internet从SQL数据库获取数据

来自分类Dev

更改从SQL Server数据库获取的数据值

来自分类Dev

使用ClrMD获取原始值

来自分类Dev

如何使用php从数据库中获取单个值

来自分类Dev

如何使用PHP从MySQL数据库获取密码值

来自分类Dev

如何使用php从数据库中获取单个值

来自分类Dev

从数据库(我的 sql)获取 ID 返回 null

来自分类Dev

如何将修改后的掩码值与原始值而不是掩码值一起保存到Azure SQL数据库中?

来自分类Dev

从Rails原始SQL查询获取数据

来自分类Dev

从Rails原始SQL查询获取数据

Related 相关文章

  1. 1

    使用Laravel中的原始查询从SQL数据库获取特定列

  2. 2

    如何查看为Ecto.Query生成的原始SQL?

  3. 3

    带有Ecto的原始SQL

  4. 4

    如何使用C ++获取SQL数据库的总大小

  5. 5

    如何使用C ++获取SQL数据库的总大小

  6. 6

    在 sql 命令中使用时,会话值未从数据库获取任何数据

  7. 7

    使用原始 SQL 更新数据库中的字段?

  8. 8

    我可以让Ecto记录原始SQL吗?

  9. 9

    如何在php中获取sql数据库查询的最大值

  10. 10

    SQL:如何忽略数据库中的NULL或0值并返回行?

  11. 11

    使用PHP查询从SQL数据库为Sagepay返回值

  12. 12

    使用原始sql时,如何跟踪数据库架构更改?

  13. 13

    如何测试多数据库Elixir(Phoenix,Ecto)应用

  14. 14

    如何从Elixir Ecto检测数据库连接问题?

  15. 15

    如何从Elixir Ecto检测数据库连接问题?

  16. 16

    如何在jsonstore Worklight 6.2中以Json格式从数据库获取或返回值?

  17. 17

    使用ecto创建MSSQL数据库时出错

  18. 18

    如何获取变量的原始值?

  19. 19

    如何获取原始流量数据

  20. 20

    如何通过Internet从SQL数据库获取数据

  21. 21

    更改从SQL Server数据库获取的数据值

  22. 22

    使用ClrMD获取原始值

  23. 23

    如何使用php从数据库中获取单个值

  24. 24

    如何使用PHP从MySQL数据库获取密码值

  25. 25

    如何使用php从数据库中获取单个值

  26. 26

    从数据库(我的 sql)获取 ID 返回 null

  27. 27

    如何将修改后的掩码值与原始值而不是掩码值一起保存到Azure SQL数据库中?

  28. 28

    从Rails原始SQL查询获取数据

  29. 29

    从Rails原始SQL查询获取数据

热门标签

归档