오라클쿼리를 안시쿼리로 바꾸는데..(하나의 테이블을 아우터를 썼더군요) 0 9 1,365

by 공기 [SQL Query] 아우터 [2019.12.05 10:03:17]


다른사람의 오라클 쿼리인데,  테이블 한개 자체에 아우터조인을 사용했더라구요.(왜 이렇게 한건지 이해가 안됨-_-)

SELECT ID
     , MAX(LOGIN_COUNT)
FROM   T_USER
WHERE  AAAA(+) = '1'
AND    BBBB(+) = '0'
AND    CCCC(+) IS NOT NULL   --??
GROUP  BY  ID

↑↑↑
위 쿼리를  아래와같이 안시쿼리로 바꾼다면
↓↓↓

SELECT ID
     , MAX(LOGIN_COUNT)
FROM   T_USER
WHERE  (AAAA = '1' OR AAAA IS NULL)
AND    (BBBB = '0' OR BBBB IS NULL)
--AND    CCCC(+) IS NOT NULL    --널이어도 되고, 아니어도 되고...즉 의미없는 조건이죠?????
GROUP  BY  ID

이렇게 하면 맞는거죠???

 

by 우리집아찌 [2019.12.05 10:25:15]

저도 처음보는 sql이네요 ㅎㅎ

업무 확인해서 재작성하는게 맞을거 같아요


by 마농 [2019.12.05 10:48:39]

정말 테이블이 한개 뿐인지?
테이블 한개에 위와 같이 (+) 를 붙였다면? 무의미한 구문입니다.
또한, 올려주신 쿼리는 그룹바이 구문도 오류입니다.
쿼리 다시 한번 더 면밀히 살펴보세요.


by 공기 [2019.12.05 11:21:03]

수정했습니다.


by 마농 [2019.12.05 11:29:55]

그룹바이는 고치셨네요?
정말로 테이블 한개 뿐인 위 쿼리 그대로 라면? (+)는 무의미하게 붙어있는 군더더기 입니다.
구문을 고칠게 아니라 (+) 만 빼면 됩니다.


by 공기 [2019.12.05 11:36:49]

원작자의  의도가  

AAAA(+) = '1'   AAAA가  '1'이거나  Null이거나  인거 같아서

(AAAA = '1' OR AAAA IS NULL)  로  바꾼건데요...

혹시,  제가  모르는  무슨  심오한  의미가  있나해서... 질문올렸습니다.ㅎ

(현업과  상의해보니...  잘못된 쿼리 같다고 하시네요...ㅎ 감사합니다)


by chrome [2019.12.05 11:15:11]

그 쿼리에 다른 조건 쿼리를 텍스트 JOIN으로 덧붙여서 재활용하겠다는

참신씨 까먹는 아이디어들이 많아요...

그런 아이디어가 아닌가 합니다.


by jkson [2019.12.05 11:29:05]

정말 테이블이 하나고 (+)가 쓰여졌다면 잘못 작성한 것이거나 테이블이 더 있었는데 삭제하면서 (+)를 안 지웠든지..

안시로 바꾸면 (+)만 빼면 되죠.


by 공기 [2019.12.05 11:37:36]

원작자의  의도가  

AAAA(+) = '1'   AAAA가  '1'이거나  Null이거나  인거 같아서

(AAAA = '1' OR AAAA IS NULL)  로  바꿨습니다.  ㅎ


by 공기 [2019.12.05 11:37:51]

답변  주신분들  감사합니다.....

 

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