:PostgreSQL을 다음 테이블을 감안할 때 select 문
shows:
title | basic_ticket_price
----------------+--------------------
Inception | $3.50
Romeo & Juliet | $2.00
performance:
perf_date | perf_time | title
------------+-----------+----------------
2012-08-14 | 00:08:00 | Inception
2012-08-12 | 00:12:00 | Romeo & Juliet
booking:
ticket_no | perf_date | perf_time | row_no | person_id
-----------+------------+-----------+--------+-----------
1 | 2012-08-14 | 00:08:00 | P01 | 1
2 | 2012-08-12 | 00:12:00 | O05 | 4
3 | 2012-08-12 | 00:12:00 | A01 | 2
그리고 추가 테이블 : 지역 이름으로 예약 row_no의 같은 번호 좌석의 목록이 포함되어 좌석.
select count(row_no) AS row_no,
area_name
from seat
where exists (select row_no
from booking
where booking.row_no = seat.row_no)
group by area_name;
생산 :
row_no | area_name
--------+--------------
1 | rear stalls
2 | front stalls
을 지금 카운트 행을 사용하여 목록을 생성하는 하나의 SQL 문을 작성하는 AREA_NAME 어떻게
이 문을 사용하여 예약 된 좌석을 그룹화 데 쇼의 이름, 공연 날짜와 시간, 각 지역의 예약 좌석 수를 보여주는?
select s.title,
perf_date,
perf_time,
count(row_no) AS row_no,
area_name
from shows s,
performance,
seat
where exists (select row_no
from booking
where booking.row_no = seat.row_no)
group by area_name,s.title,performance.perf_date,performance.perf_time;
을하지만 행을 반복 보여줍니다 :
이 시도했습니다
title | perf_date | perf_time | row_no | area_name
----------------+------------+-----------+--------+--------------
Romeo & Juliet | 2012-08-12 | 00:12:00 | 1 | rear stalls
Romeo & Juliet | 2012-08-14 | 00:08:00 | 2 | front stalls
Inception | 2012-08-12 | 00:12:00 | 1 | rear stalls
Inception | 2012-08-14 | 00:08:00 | 2 | front stalls
Inception | 2012-08-14 | 00:08:00 | 1 | rear stalls
Inception | 2012-08-12 | 00:12:00 | 2 | front stalls
Romeo & Juliet | 2012-08-14 | 00:08:00 | 1 | rear stalls
Romeo & Juliet | 2012-08-12 | 00:12:00 | 2 | front stalls
(8 rows)
이 해결에 어떤 도움을 주시면 감사하겠습니다.
: 당신이이 두 번째에 조인 조건을 누락 전체 설정은 다음과 같을 수 있습니다 성명서. 쇼, 퍼포먼스, 그리고 좌석 사이에 단품 조인을 연출합니다. Youd'd는 'JOIN ...'을 사용하여 다시 작성했습니다. –
제 사과를 수락하십시오. psql을 사용하고 있지만 mysql에 태그를 추가하여 espescially select 문과 비슷한 문장을 찾을 수 있습니다. –
직렬 키를 기본 키로 사용해야합니다. 영화를 볼 수있는 두 번째 방을 얻으면 어떨까요?perf_date와 perf_time으로 식별되기 때문에 두 영화가 동시에 발생하도록 할 수 없습니다. 또는 공연이 예정되어있을 때 무엇을해야합니까? 여러 테이블을 수정해야하는데 이는 나쁜 일입니다. 그리고 사소한 제안 : 나는 열 제목에 표 제목을 반복하지 않을 것입니다. 그렇지 않으면 perf.perf_title - perf.title로 끝날 것입니다. –