마뇽님 봐주세요~ 0 1 2,173

by Mr.oracle [2009.10.21 10:43:48]


아래 쿼리 질문에서 잘못됫다는 부분에 대해서

조금더 자세히 설명 가능하신지요..^^ㅎㅎ

SELECT TFN_NO,
   TFN_SEQ,
   TFN_GUBUN,
   TFN_PART,
   TFN_TITLE,
   TFN_SABUN,
   TFN_DATE,
   TFN_READ_COUNT,
   TFN_VISIBLE,
   TFN_LEVEL,
   TFN_COUNT,
   TFN_FILE   
 FROM (SELECT "TBF_NOTICE"."TFN_NO" TFN_NO,
      "TBF_NOTICE"."TFN_SEQ" TFN_SEQ,
      "TBF_NOTICE"."TFN_GUBUN" TFN_GUBUN,
      "TBF_NOTICE"."TFN_PART" TFN_PART,
      "TBF_NOTICE"."TFN_TITLE" TFN_TITLE,
      "TBF_NOTICE"."TFN_SABUN" TFN_SABUN,
      "TBF_NOTICE"."TFN_DATE" TFN_DATE,
      "TBF_NOTICE"."TFN_READ_COUNT" TFN_READ_COUNT,
      DECODE("TBF_NOTICE"."TFN_VISIBLE", 'Y', 'Y', 'N') TFN_VISIBLE,
      1 TFN_LEVEL,
      '[0]' TFN_COUNT,
      0 TFN_FILE
    FROM "TBF_NOTICE"
     WHERE "TBF_NOTICE"."TFN_PART" = 'NO' AND
      "TBF_NOTICE"."TFN_DATE"  >= SYSDATE - 7

   UNION ALL

     SELECT A."TFN_NO" TFN_NO,
      A."TFN_SEQ" TFN_SEQ,
      A."TFN_GUBUN" TFN_GUBUN,
      A."TFN_PART" TFN_PART,
      A."TFN_TITLE" TFN_TITLE,
      A."TFN_SABUN" TFN_SABUN,
      A."TFN_DATE" TFN_DATE,
      A."TFN_READ_COUNT" TFN_READ_COUNT,
      DECODE(A."TFN_VISIBLE", 'Y', 'N', 'N') TFN_VISIBLE,
      A.TFN_LEVEL TFN_LEVEL,
      '[' || TO_CHAR(SUM(NVL(B.TFN_COUNT, 0))) || ']' TFN_COUNT,
      NVL(SUM(C.TFN_FILE), 0) TFN_FILE
    FROM  (SELECT E."TFN_NO" ,
         E."TFN_SEQ",  
         E."TFN_GUBUN",
         E."TFN_PART",
               E."TFN_TITLE",
                E."TFN_SABUN",  
                E."TFN_DATE",  
               E."TFN_READ_COUNT",
               E."TFN_VISIBLE",
            LEVEL TFN_LEVEL 
       FROM "TBF_NOTICE" E
      START WITH E."TFN_SEQ" = 1
    CONNECT BY PRIOR E."TFN_SEQ" = E."TFN_UPPER_SEQ" 
         AND PRIOR  E."TFN_NO" = E."TFN_NO") A,
      (SELECT D."TFNR_NO" ,
         D."TFNR_SEQ",
         COUNT(D."TFNR_NO") TFN_COUNT
       FROM "TBF_NOTICE_REPLY" D
        GROUP BY D."TFNR_NO", D."TFNR_SEQ") B,
      (SELECT F."TFNF_NO" ,
         F."TFNF_SEQ",
         COUNT(F."TFNF_NO") TFN_FILE
       FROM "TBF_NOTICE_FILE" F
        GROUP BY F."TFNF_NO", F."TFNF_SEQ") C
   WHERE A."TFN_NO" = B."TFNR_NO" (+) AND
       A."TFN_SEQ" = B."TFNR_SEQ" (+) AND
       A."TFN_NO" = C."TFNF_NO" (+) AND
       A."TFN_SEQ" = C."TFNF_SEQ" (+)
  GROUP BY A."TFN_NO",
       A."TFN_SEQ",
       A."TFN_GUBUN",
       A."TFN_PART",
       A."TFN_TITLE",
       A."TFN_SABUN",
       A."TFN_DATE" ,
       A."TFN_READ_COUNT",
       A."TFN_VISIBLE",
       A.TFN_LEVEL
     ORDER BY A."TFN_NO" DESC)

by 마농 [2009.10.21 11:13:54]
SELECT a.col1 aa FROM a [ORDER BY a.col1]
UNION ALL
SELECT b.col1 aa FROM b [ORDER BY b.col1]
(ORDER BY aa)

대괄호로 되어 있는 부분이 오면 오류입니다.
각각의 쿼리에 대한 정렬을 할 수 없습니다.
하나 중괄호처럼 하면 이는 두번째 쿼리의 정렬이 아닌 전체집합에 대한 정렬로 인식되어 오류가 나지 않습니다.
만약 두번째 집합만의 정렬을 원하신다면 다음과 같이
SELECT a.col1 aa FROM a
UNION ALL
SELECT * FROM (SELECT b.col1 aa FROM b ORDER BY aa)
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입