如何在sql中的表中输出父子关系?

时间:2015-08-22 01:08:00

标签: sql join relationship

我有Table1,它显示了产品之间的子和父关系。如何用sql获取输出表?基本上,输入表显示B是A的子项,B1和B2是B的子项。输出也需要显示,并且B1和B2也是A的子项。

2 个答案:

答案 0 :(得分:0)

我相信你需要的是hierarchical queries

举个例子,你可以这样做:

select avg(avgrcls)
from
(
SELECT avg(r_class) as avgrcls
FROM ranks 
WHERE r_submitterid=?
GROUP BY r_showcaseid 
ORDER BY avg(r_class) DESC LIMIT 5
) t

注意:这假设您知道根(顶级)元素是'产品A'。虽然没有它也可以工作。

答案 1 :(得分:0)

您的问题的答案显示在此sqlfiddle中:http://sqlfiddle.com/#!4/87657/61

您需要使用如下所示的分层查询:

SELECT ChildProduct, CONNECT_BY_ROOT ParentProduct
FROM table_name
WHERE LEVEL >= 1 
CONNECT BY PRIOR ChildProduct = ParentProduct 

|儿童| CONNECT_BY_ROOTPARENT |
| ------------ | ----------------------- |
|产品B |产品A |
|产品B1 |产品A |
|产品B2 |产品A |
|产品C |产品A |
|产品D |产品A |
|产品D1 |产品A |
|产品E1 |产品A |
|产品E2 |产品A |
|产品B1 |产品B |
|产品B2 |产品B |
|产品D1 |产品D |
|产品E1 |产品D |
|产品E2 |产品D |
|产品E1 |产品D1 |
|产品E2 |产品D1 |