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

ecloud · March 06, 2021 · Last by ecloud replied at March 07, 2021 · 700 hits

我有一个复杂的 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 呢

Reply to a886937

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

Reply to Rei

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

You need to Sign in before reply, if you don't have an account, please Sign up first.