2017-03-17 72 views
0

我在Oracle层次查询工作见下表 Classification_ProductOrder_details从两个表

分类产品重建的Oracle层次查询根据用户选择了将被存储在Order_detailsClassification_id

分类产品表 Classification Product table

ORDER_DETAILS表 Order_details table

我要选择具有父LED Screen将返回有父LED Screen不管孩子是什么,32英寸或50英寸的索尼三星等等等等

我尝试使用所有产品Order_details表中的所有产品下面的查询,但其replate行很多

  SELECT B.CLASSIFICATION_ID, LEVEL AS VLEVEL, A.CATEGORY_ID, A.CATEGORY_DESC, CONNECT_BY_ISLEAF AS leaf 
      FROM PRODUCT_CLASSIFICATION A, ORDER_DETAILS B 
      WHERE A.STATUS = 1 and b.created_on like sysdate--AND leaf =1 
     START WITH A.CATEGORY_ID IS NULL 
     CONNECT BY A.CATEGORY_ID = PRIOR A.CLASSIFICATION_ID 
ORDER SIBLINGS BY A.CLASSIFICATION_ID; 
+0

首先查询重复记录,因为你不加where条件的关系在B表A,然后为每个记录基于B表复制结果在桌子上。 – hackvan

回答

0
select od.* 
from order_details od 
where 
    od.classification_id in (
    select p.classification_id 
    from product p 
    start with p.category_desc = 'LED Screen' 
    connect by prior p.classification_id = p.category_id 
)