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