3

こんにちは、

WITH 状態は WHERE 句に含めることができますか?

例えば:

SELECT tbl1.name , tbl1.ID  
FROM DBTABLE0001 AS tbl1
WHERE  ( 
    exists(

        WITH H (super, ID, depth) AS 
        ( 
        SELECT ROOT.parent, ROOT.ID , 0 
        FROM DBTABLE0001 ROOT  
        WHERE ROOT.ID = tbl1.ID 

        UNION ALL 

        SELECT PARENT.parent, PARENT.ID , CHILD.depth + 1 
        FROM H CHILD, DBTABLE0001 PARENT 
        WHERE PARENT.ID = CHILD.super 

        )

        SELECT ID 
        FROM H 
        WEHER H.ID = "abcd"
        ORDER BY depth

    ) 
)  

ありがとう、モー。

4

1 に答える 1

4

クエリの先頭に with ステートメントを配置する必要があります。その後、どこでも使用できます:

WITH H (super, ID, depth) AS           
            (SELECT ROOT.parent, ROOT.ID , 0 
                  FROM DBTABLE0001 ROOT            
              WHERE ROOT.ID = DBTABLE0001.ID             
              UNION ALL             
              SELECT PARENT.parent, PARENT.ID , CHILD.depth + 1                         FROM H CHILD, DBTABLE0001 PARENT           
                WHERE PARENT.ID = CHILD.super) 

SELECT tbl1.name , tbl1.ID    
    FROM DBTABLE0001 AS tbl1  
    WHERE  (exists(SELECT ID FROM H WEHER H.ID = "abcd"  ORDER BY depth)) 
于 2011-04-17T09:11:16.987 に答える