by momo [SQL Query] 쿼리 [2022.01.01 17:48:30]
SELECT u.*, case when ( SELECT d.dt_id FROM dt d WHERE d.user_id = "test3" ) IS NOT NULL then ( SELECT d.dt_id FROM dentist d WHERE d.user_id = "test3" ) when ( SELECT t.tn_id as b FROM tn t WHERE t.user_id = "test3" ) IS NOT NULL then ( SELECT t.tn_id as b FROM tn t WHERE t.user_id = "test3" ) END FROM user u;
하나의 사용자가 dt, tn이라는 테이블과 각각 1:1을 맺고 있습니다.
다만 사용자가 dt를 선택해서 dt에 정보가 insert 되면 더이상 tn이라는 테이블에는 데이터를 넣을 수 없고, 그 반대에도 마찬가지입니다.
그래서 사용자는 dt, tn이라는 테이블과 각각 1:1 관계를 맺고 있기는 하지만 관련 데이터는 둘 중 하나에만 들어가는 상황입니다.
이 경우에 "test3" 사용자 id를 이용해서 dt 테이블과 tn 테이블에 데이터가 존재하는지 확인하고, 있다면 해당 dt_id 혹은 tn_id를 뽑아내고 싶습니다.
일단 case 문으로 작성을 해서 원하는 결과는 나오는것 같지만 쿼리가 너무 엉망인것 같습니다 ㅠㅠ. 이 쿼리를 어떻게 해야 간단하게 만들 수 있을까요??