SELECT A.ID, A.NAME, A.ADRESS, A.PHONE, ....
FROM TABLE_A A
WHERE A.ID IN ('A', 'B', 'C', 'D', 'E' ...)
이런 쿼리문이 있을 때...
AND 조건으로
AND EXISTS ( SELECT 'O' FROM TABLE_B WHERE A.ID = B.DATA_ID AND B.KIND = 'TEST' AND B.ID IN ('AA', 'BB', 'CC', 'DD') ....
이런 조건을 추가해서 작업을 했습니다.
저렇게 추가한 이유는.. 먼저 보이는 SELECT 절은 그냥 일반적으로 TABLE_A에서 가져오는 쿼리절이구요
두번째 AND EXISTS의 B.ID는 특정 사용자마다 검색할 수 있는 조건입니다.
저렇게 했을 땐 , 특정 사용자가 검색할 수 있는 조건에 한해서 쿼리를 해오는데요
기본적으로 B.ID 값이 없는 값도 들고오게 하려면 어떤식으로 쿼리를 만들어야 하나요?
아.. TABLE_B는 조인테이블입니다.
TABLE_A , TABLE_C ( 사용자가 검색할 수 있는 AA, BB, CC, DD .. 목록 ) , TABLE_B ( TABLE_A, TABLE_C 조인 테이블 )
글을 너무 못써서 죄송합니다 ㅠㅠ
네. B테이블에 있는 값은 사용자가 다른 화면에서 지정할 수 있는 권한입니다. 설정값은 C테이블에 있는 값을 가져와서 입력합니다. (C테이블에 있는 값 : AA, BB,CC,DD, EE ) .... 만약 T 사용자가 권한 수정을 통해 ( AA , BB , CC ) 검색 권한을 줬을 때, 검색은 C 테이블에 있는 값이 모두 나오도록 하게 하고 싶습니다.
B테이블에 있는 PK값은 3개입니다. ( B.ID(조인테이블에 있는 PK값), DATA_ID(다른 테이블의 내부 PK값), 구분값(예를들어.. '한식', '중식', '양식'..) ) 이런식입니다.
B.ID에 값이 없다는 건 이 사용자가 해당 구분값을 선택을 할 수 없다는걸 의미합니다.
죄송합니다. 제가 다시 읽어봐도 너무 글을 못썻네요 ㅠㅠ
실제적으로 사용된 테이블은 3개입니다.
A테이블, B테이블, C테이블 ( B테이블, C테이블은 추가된 테이블입니다.)
A테이블은 기존 사용하던 테이블 ( ID(PK), NAME, ADDRESS, GUBUN ... )
B테이블은 A와 C의 조인테이블 ( GUBUN, C테이블의 CID, A테이블의 DATA_ID ( 3개를 묶어 PK로 잡았습니다.) ... )
( B테이블의 구분값은 해당 테이블의 특징을 말합니다. 화장품을 예로 들어 GUBUN='향수', GUBUN='스킨' 이런 값들이 들어가게 됩니다.)
C테이블은 특정 값이 들어 있는 테이블입니다. ( CID(PK), CNAME, CADDRESS ... )
C테이블의 값은 고정이고 A테이블 말고도 여러개의 테이블을 연결할 수 있습니다. 해당 테이블 ID(PK)를 통해서..
A와 C테이블은 B테이블을 통해 조인하게 됩니다.
현재 C 테이블에 ( AA, BB, CC, DD, EE ) 값이 있다고 가정.
사용자 T가 사용자 설정을 통해서 권한을 수정함
( 기존에는 따로 권한이 없었음 -> 설정을 통해서 AA,BB,CC만 수정, 삭제 할 수 있도록 변경 )
A가 검색된 화면 ( 질문에 올렸던 쿼리문으로 변경 ( 기존 쿼리문은 AND EXISTS .. 이 부분이 없었습니다 ) )
에서 추가된 EXISTS ( SELECT 'O'
FROM TABLE_B B
WHERE A.ID = B.DATA_ID
AND B.GUBUN = '향수'
AND B.CID IN ('AA', 'BB', 'CC') )
이런 형태입니다.
하지만 B.CID값이 없더라도 검색은 되게 하고 싶습니다.