【问题标题】:Recursive SQL to get data递归 SQL 获取数据
【发布时间】:2020-11-08 16:09:04
【问题描述】:

我有两张桌子 PS_ITEM 和 PS_ITEM_XREF

PS_ITEM 的结构

COMMON_ID   ITEM_NBR        SEQ   EMPLID     ACCOUNT_NBR  CLASS_NBR
00000000200 000000000000002 1   00000000200 TUT001       10146
00000000200 000000000000002 2   00000000200 TUT001       10146
00000000200 000000000000002 3   00000000200 TUT001       10146
00000000200 000000000000006 1   00000000200 VAT001       10146
00000000200 000000000000008 1   00000000200 TUT001       10146
00000000200 000000000000003 1   00000000200 VAT001       
00000000200 000000000000004 1   00000000200 VAT001       
00000000200 000000000000009 1   00000000200 TUT001       10143
---------------------------------------------------------------

PS_ITEM_XREF 的结构

   COMMON_ID    ITEM_NBR_CHARGE  ITEM_NBR_PAYMENT AMOUNT
   00000000200  000000000000003  000000000000006  2100
   00000000200  000000000000010  000000000000009  1000

我想从 PS_ITEM 中选择值,其中 class_nbr = 10146 以及所有行 其中 PS_ITEM.ITEM_NBR=PS_ITEM_XREF.ITEM_NBR_CHARGE 用于 PS_ITEM 中 PS_ITEM_XREF.ITEM_NBR_PAYMENT 的所有行,其中 class_nbr = 10146

所以我的结果是

    COMMON_ID   TEM_NBR        SEQ   EMPLID     ACCOUNT_NBR  CLASS_NBR
    00000000200 000000000000002 1   00000000200 TUT001       10146
    00000000200 000000000000002 2   00000000200 TUT001       10146
    00000000200 000000000000002 3   00000000200 TUT001       10146
    00000000200 000000000000006 1   00000000200 VAT001       10146
    00000000200 000000000000008 1   00000000200 TUT001       10146
    00000000200 000000000000003 1   00000000200 VAT001       

【问题讨论】:

    标签: sql oracle recursion hierarchy


    【解决方案1】:

    你的意思是这样的吗?

    SELECT * 
    FROM   PS_ITEM 
    WHERE  ( CLASS_NBR='10146' 
             OR 
             ITEM_NBR IN 
             ( SELECT  ITEM_NBR_CHARGE 
               FROM    PS_ITEM_XREF
               WHERE    ITEM_NBR_PAYMENT IN (SELECT ITEM_NBR FROM PS_ITEM WHERE CLASS_NBR='10146')))
    

    【讨论】:

    • 它给了我 PS_ITEM_XREF 中存在的所有行但是它应该只给我 ITEM_NBR = 000000000000003 的行
    • @RohitPrasad 。 . .结果对我来说是正确的:dbfiddle.uk/….
    猜你喜欢
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 2014-10-27
    • 2010-10-06
    • 2014-08-02
    • 1970-01-01
    相关资源
    最近更新 更多