쿼리 질문이요 0 6 979

by 정민호 [SQL Query] [2022.06.20 16:26:21]


안녕하세요

 

쿼리좀 문의드릴께 있어서요

 

table1

   col1      run_yn

    a          y

    b

    c

    d

    e

    f

table2

   col1  next_col

    a      b

    b      c

    c      d

    e      f

 

위와 같이 있을때 

  table2 는 col1 다음순서가 next_col입니다. 

 

a->b->c->d

e->f

 

위에서 실행할것을 찾아올려구요

즉 a 는 실행이 y 이니까 실행안한 b 와 f 가 나오게 쿼리를 구현하고 싶습니다. 

 

한수 가르쳐 주세요

 

 

 

 

by 마농 [2022.06.20 16:31:11]

왜 결과가 b, f 가 나와야 하죠?
- b 는 a 다음이라 나와야 한다고 치면?
- f 는 왜 나와야 하죠?


by 정민호 [2022.06.20 16:33:40]

아.. 오타네요. b 하고 e가 나와야되요.. ^^


by 마농 [2022.06.20 20:35:04]
-- Oracle --
WITH t1 AS
(
SELECT 'a' col1, 'y' run_yn FROM dual
UNION ALL SELECT 'b', '' FROM dual
UNION ALL SELECT 'c', '' FROM dual
UNION ALL SELECT 'd', '' FROM dual
UNION ALL SELECT 'e', '' FROM dual
UNION ALL SELECT 'f', '' FROM dual
UNION ALL SELECT 'g', 'y' FROM dual
)
, t2 AS
(
SELECT 'a' col1, 'b' next_col FROM dual
UNION ALL SELECT 'b', 'c' FROM dual
UNION ALL SELECT 'c', 'd' FROM dual
UNION ALL SELECT 'e', 'f' FROM dual
)
SELECT a.col1
  FROM t1 a
  LEFT OUTER JOIN t2 b
    ON a.col1 = b.next_col
 WHERE a.run_yn IS NULL
 START WITH b.col1 IS NULL
 CONNECT BY PRIOR a.col1 = b.col1
        AND PRIOR a.run_yn = 'y'
;

 


by 정민호 [2022.06.21 10:20:46]

감사합니다. 제가 지금 postgresql 을 사용하고 있어서요.. 변경해보겠습니다. 


by 마농 [2022.06.21 10:40:45]
-- PostgreSQL --
WITH RECURSIVE t4 AS
(
WITH t1 AS
(
SELECT 'a' col1, 'y' run_yn
UNION ALL SELECT 'b', null
UNION ALL SELECT 'c', null
UNION ALL SELECT 'd', null
UNION ALL SELECT 'e', null
UNION ALL SELECT 'f', null
UNION ALL SELECT 'g', 'y'
)
, t2 AS
(
SELECT 'a' col1, 'b' next_col
UNION ALL SELECT 'b', 'c'
UNION ALL SELECT 'c', 'd'
UNION ALL SELECT 'e', 'f'
)
, t3 AS
(
SELECT a.col1
     , b.col1 p_col1
     , a.run_yn
  FROM t1 a
  LEFT OUTER JOIN t2 b
    ON a.col1 = b.next_col
)
SELECT *
  FROM t3
 WHERE p_col1 IS NULL
 UNION ALL
SELECT b.*
  FROM t4 a
 INNER JOIN t3 b
    ON a.col1 = b.p_col1
 WHERE a.run_yn = 'y'
)
SELECT col1
  FROM t4
 WHERE run_yn IS NULL
;

 


by 정민호 [2022.06.21 11:33:01]

감사합니다. 어렵네요. ^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입