sql 작성 관련해서 질문있습니다 0 3 839

by 동글이 [SQL Query] [2020.12.11 08:51:12]


안녕하세요 ㅎㅎ

가입하자마자 질문글이네요 ~

도움을 많이 받고 있는 사이트인데 활동을 꾸준히 가져가도록 하겠습니다.

 

이번에 제가 질문하고 싶은 내용은

제가 이런형식의 쿼리를 짰는데요

select t1.*
  from t1
      , t2
where 1=1 
   and t1.col1 = t1.col1
   and ((t2.col2 is not null and t1.col2=t2.col2) or 1=1)

제가 하려고 했던건

t2의 col2 값이 있으면 t1의 col2와 값이 같은 경우에 조회가되고

이외는 모두 보여지도록 하려고 합니다.

decode나 nvl같은 함수를 조건절에서 사용하면

성능 부분에서 문제가 생길 수 있다고 해서 이렇게 작성해봤는데

더 좋은 방법이 있을까 해서 여쭤봅니다 ㅎ.ㅎ

by 마농 [2020.12.11 09:00:28]

지금 작성된 조건은 의미 없는 조건입니다.
(OR 1=1) 은 무조건 참인 조건이므로 있으나 마나 한 조건
조건에 대한 설명도 모호한 부분이 있습니다. 설명만으로는 부족합니다.
두테이블의 자료 예를 들고, 그에 대한 결과표도 그려주세요.


by 동글이 [2020.12.11 09:16:53]

아 보엄이 삼엄해서 원래 쿼리를 못보여드리다보니

자료가 부족했네요 죄송합니다.

사실 t2라는 테이블은 단건만 조회되도록 조건이 걸려있는데요

t2라는 테이블에 col2값이 필수값이 아니어서 있을 경우에만 

t1이라는 테이블에서 col2에 해당하는 값을 조회하고 싶어서 

저런 쿼리를 작성했습니다 

근데 이렇게 놓고보니 or를 빼고 그냥 t1.col2 = t2.col2 조건만 걸어도 동일하겠네요.


by 마농 [2020.12.11 09:22:34]

원래 쿼리나, 원래 자료를 보여줄 필요는 없습니다.
원래의 자료와 쿼리를 대변할 수 있는 간단 예제를 보여주시면 됩니다.
위와 같은 모호한 표현의 설명만으로는 부족합니다.
원본 대비 결과표 예시자료를 보여주세요.

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