database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 31271 게시물 읽기
No. 31271
호텔 예약 테이블 구조 문의
작성자
성수
작성일
2019-12-21 04:33ⓒ
2019-12-21 13:48ⓜ
조회수
2,134

호텔 예약 프로그램을 만들고 있는데

 

디럭스룸이 30개

스텐다드룸이 10개

스위트 룸이 3개

 

있습니다.

 

365일동안 판매를 한다 치면

 

타입 스텐다드룸 30개 * 365일

타입 디럭스룸 10 * 365일

타입 스위트 룸 3개 * 365일

 

의 행을 입력합니다.

사용이 되고 나면 사용했다는 필드(is_use)를 1로 업데이트 합니다.

 

이랬을 경우

 

특정날자에 예약가능한 방을 구하고 싶은데요

 

ex1)

1월 1일에서 3일까지 예약이 가능한 디럭스룸 객실 전부 구하기 또는 x개 구하기

 

ex2)

1월 1일에서 3일까지 예약 가능한 모든 타입의 객실 전부 구하기 또는 x개 구하기

 

ex3)

1월 1일에서 3일까지 예약 가능한 모든 타입의 객실을 타입별로 x개 구하기

 

이런형태의 질의를 하고 싶습니다.

 

 

 

type table

--------------------------

 

seq       | name

1          | standard

2          | deluxe

3          | suite

 

 

room table

--------------------------

seq     | name

1         | 101

2         | 102

...

 

 

 

item table

--------------------------

seq          |  room seq  |  type seq |  is_use |      date             

 

           1   |                1  |         1        |         1  |  2020-01-01

           2   |               1  |         1        |         1  |  2020-01-02

           3   |               1 |         1        |         1  |  2020-01-03

           4   |               1  |        1        |         1  |  2020-01-04

                                            .....

    10951   |               2  |       2       |         1  |  2020-01-01

    10952   |              2  |       2       |         1  |  2020-01-02

    10953   |              2  |       2       |         1  |  2020-01-03

    10954   |              2  |       2       |         1  |  2020-01-04

                                            .....

 

쿼리문을 어떻게 짜야할까요?

이 글에 대한 댓글이 총 1건 있습니다.

디럭스, 스텐다드, 스위트  type은

room의 속성입니다. 즉 room테이블에 type_seq 값이 있어야 합니다.

예약가능한 방을 구하기 위해서는

전체방목록에서 해당일자에 예약된 방을 제거하면 됩니다.

select * from room r

where not exists (select 1 from item i where i.room_seq=r.seq and between '2020-01-01' and '2020-01-03')

-- and r.type_seq=2 --ex1) 디럭스룸 만 구할경우

박인호(paerae)님이 2019-12-23 11:08에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
31274쿼리 질문 드립니다. [1]
도상훈
2020-01-20
1919
31273데이터베이스가 안보여요 [1]
초보입니다.
2020-01-20
1831
31272[질문] SELECT 에서 IN이랑 =(equal) 성능차이가 있을까요 [3]
박노중
2020-01-06
2002
31271호텔 예약 테이블 구조 문의 [1]
성수
2019-12-21
2134
31269아래 쿼리 플랜은 성능이 어느정도일까요? [1]
belhyun
2019-12-10
1999
312681:n구조의 쿼리 문의드립니다. [3]
기훈
2019-12-03
2030
31267기초 데이터베이스 테이블 질문 [2]
김상훈
2019-11-26
2165
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다