Rails 如何将复杂 sql 转化为 Rails 方式的查询

ecloud · 2021年03月06日 · 最后由 ecloud 回复于 2021年03月07日 · 706 次阅读

我有一个复杂的 sql 查询,不知道如何转化为 Rails 方式的查询,sql 如下

SELECT
 ID.LEVEL,
 t.*
FROM
(
 SELECT
 @id AS _id, ( SELECT @id := parent_id FROM product_categories WHERE id = @id),
 @l := @l + 1 AS LEVEL
 FROM
 product_categories, (SELECT @id := 100, @l := 0) as b
 WHERE
 @id > 0 ) as ID,
 product_categories as t
WHERE
 ID._id = t.id
ORDER BY `LEVEL`;

我尝试这样使用

ProductCategory.find_by_sql("xxx")

但是会报错。

试一下?

ProductCategory.connection.query(sql_str)

报啥错贴上来啊。

估计就是标点符号啥的问题,根据报错 google google 呢

a886937 回复

我把 sql 缩成一行出错了,然后用 sql_str 存储 heredoc 存储查询字符串,成功了。

Rei 回复

用 heredoc 存储查询字符串可以了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号