查找自联接关联中每条记录的最后一个祖先

时间:2015-07-07 08:59:02

标签: ruby-on-rails postgresql ruby-on-rails-4

我有一个表Products(id,product_id,(name)...)

每个产品都归其他产品所有(此链可以有多个链接)

'name'属性仅在产品链的最后一个祖先上定义,因此如果我想显示产品列表,我将不得不以递归方式查询每条记录的名称。

因此,在给定产品ID列表的情况下,我想为每个产品ID返回最早的祖先,以便我可能会急切地加载它们。

我已尝试在postgres中使用递归自联接树,但未能提出任何可行的方法

我的尝试:

self.where('products.id IN
                  (WITH RECURSIVE tree(id) AS (
                     SELECT product.id
                     WHERE product.id IN (?)
                   UNION ALL
                     SELECT product.id
                     JOIN tree ON product.id = tree.id)
                    SELECT id FROM tree)', product_ids)

非常感谢任何帮助

由于

0 个答案:

没有答案