查找与自关联(SQL)属性匹配的所有记录
我有以下型号查找与自关联(SQL)属性匹配的所有记录,sql,postgresql,Sql,Postgresql,我有以下型号 Shipment (id, product_id, ...) Product (id, product_id, some_attribute:boolean, ...) 一批货物属于一个产品,而一个产品有多批货物。此外,通过自引用(product\u id),一个产品可以是另一个产品的子产品 我想查找在自我参考链顶部的产品上的some\u属性为真的所有装运 比如说这个例子, shipment1 (id = 1, product_id = 1) shipment2 (id = 2,
Shipment (id, product_id, ...)
Product (id, product_id, some_attribute:boolean, ...)
一批货物属于一个产品,而一个产品有多批货物。此外,通过自引用(product\u id
),一个产品可以是另一个产品的子产品
我想查找在自我参考链顶部的产品上的some\u属性
为真的所有装运
比如说这个例子,
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
,其中某些属性对于p4
为真
非常感谢
编辑:
为清楚起见,产品链可以任意长,但在实践中,通常是2-3个链接我假设您的参考链可以比示例中的更长,对吗?是的,它可以是任意长度,但在实践中,通常是2-3个链接。我认为您需要使用CTEs的递归版本来探索:是的,我看过了,但无法使其工作,如果您能提供一个示例,那将是greatI,我从未使用过它。我之前评论中的第一个链接有一些例子。如果你把你的尝试添加到你的问题文本中,我会看看我是否能帮上忙。