查找自我关联中匹配属性的所有记录(SQL)

时间:2015-04-28 15:28:54

标签: sql postgresql

我有以下型号

Shipment (id, product_id, ...)
Product (id, product_id, some_attribute:boolean, ...)

如果货物属于产品且产品有很多货件。此外,产品可以通过自我引用(product_id

成为另一种产品的子产品

我想找到自我引用链顶部产品some_attribute为真的所有货件。

例如,在此示例中

shipment1 (id = 1, product_id = 1)
shipment2 (id = 2, product_id = 2)

product1 (id = 1, product_id = 3, some_attribute = false)
product2 (id = 2, product_id = 4, some_attribute = false)
product3 (id = 3, product_id = null, some_attribute = false)
product4 (id = 4, product_id = null, some_attribute = true)

仅返回shipment2,因为它的产品系列与p2->p4类似,其中some_attribute属于p4

非常感谢

编辑:

为清楚起见,产品链可以任意长,但在实践中,它通常是2-3个链接

0 个答案:

没有答案