서브쿼리의 위치 질문드립니다. 0 2 180

by 고등어통조림 [MySQL] [2019.07.10 12:45:16]


회원 테이블과 예약 테이블이 있습니다

 

최종 결과로 회원 아이디와 회원 전화번호 예약번호를 가져와야 하는데

그 예약번호는 활성화된 예약 번호만 가져와야 합니다.

 

예약 테이블에 예약 상태 컬럼이 있는데 1. 예약, 2. 취소 3. 완료 이렇게 3가지 상태가 있습니다

그럴 경우 1. 예약인 상태만 가져와야 하는데

제 생각엔 서브쿼리를 써야 할것 같은데

 

이 서브쿼리를 select 절에 둘지, where 절에 둘지 너무 헷갈려서요....

그리고 관계는 그냥 일반적인 이너조인이 맞나요?

by 마농 [2019.07.10 13:30:20]
SELECT a.회원아이디
     , a.회원전화번호
     , b.예약번호
  FROM 회원 a
 INNER JOIN 예약 b
    ON a.회원아이디 = b.회원아이디
 WHERE b.예약상태 = '예약'
;

 


by 러드 [2019.07.10 13:42:09]

안녕하세요. 아는 범위에서 적어봅니다.

1. 얘약정보 테이블 상태컬럼  update 구조이면  where로 이너조인 and 상태컬럼 = '예약'

2. 상태값이 예약, 취소, 완료에 대한 history data구성이면 인라인뷰로 최근값 추출 후 where 처리 하면 됩니다.

최근값은 분석함수 이용 인라인뷰에서 

2-1. row_number() over( partition by 예약번호 order by 변경일자 desc ) as rn

where rn = 1 하면 최근 상태값

2-2.( select 화원번호, 예약번호

           ,    max(변경상태) keep( dense_rank first order by 변경일자 desc)

      from 예약테이블

  group by 회원번호, 예약번호

)

가능합니다.

 

select  (serect .. ) 스칼라쿼리

   from (select ... ) 인라인뷰

where exists ( select ..) 서브쿼리 

입니다.

 

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