쿼리 질문드립니다 잘 부탁드려용 0 2 1,212

by 최영웅 [2016.09.30 12:49:45]


SELECT *

   FROM ( SELECT A.ID

                        B.NAME

                        A.SEQ

                 FROM A,B

             WHERE  A.ID = B.ID

 )   1번 값

SELECT *

   FROM ( SELECT A.ID

                        B.NAME

                        A.SEQ

                 FROM A,B

             WHERE  A.ID = B.ID

                 AND A.SEQ = B.SEQ

 )   2번 값

 1번 쿼리로 나온 결과값  밑으로 2번결과값을  붙히고 싶습니다.

UNION ALL 하니까 결과값이 서로 SORT되어서 섞혀버리는데

어떻게 해야할찌 잘 모르겠습니다.

 

 

 

 

 

by 창조의날개 [2016.09.30 13:27:09]

 

테스트를 못해봐서 잘될지 모르겠네요..

 

-- 방법1
SELECT ID, NAME, SEQ
   FROM ( SELECT 1 LV,  A.ID,
                        B.NAME,
                        A.SEQ
                 FROM A,B
             WHERE  A.ID = B.ID
          UNION ALL
          SELECT 2 LV,  A.ID,
                        B.NAME,
                        A.SEQ
                 FROM A,B
             WHERE  A.ID = B.ID
                 AND A.SEQ = B.SEQ
          ORDER BY LV
);

-- 방법2
SELECT ID, NAME, SEQ
   FROM ( SELECT LV,  A.ID,
                        B.NAME,
                        A.SEQ
                 FROM A,B
                    , (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 2)
             WHERE (LV = 1 AND A.ID = B.ID)
                OR (LV = 1 AND A.ID = B.ID AND A.SEQ = B.SEQ)
             ORDER BY LV
);

 


by 겸댕2후니 [2016.10.04 14:13:19]

혹시 원하시는값이 아래와 같지 않나요?

(질문해주신대로 하면 중복값이 많이 발생하겠네요.)

1.  A.ID = B.ID 이면서, A.SEQ != B.SEQ 인것

2. A.ID = B.ID 이면서, A.SEQ = B.SEQ 인것

원하는 결과값이 위의 1,2라면

SELECT A.ID
      ,B.NAME
      ,A.SEQ
FROM A,B
WHERE  A.ID = B.ID
ORDER BY A.ID, A.SEQ;

 

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