2011-04-25 2 views
0

두 테이블, eventstickets이있는 데이터베이스가 있습니다. events 테이블에는 이벤트 행과 각 티켓이 tickets 개 들어 있습니다. 예를 들어MySQL - 이벤트에 대해 판매 된 티켓을 계산하려고합니다.

,

events 
------ 
id name capacity 
1 Test 10 
2 Test2 20 
3 Test3 15 

tickets 
------- 
id event_id customer_id 
1 1  (value here doesn't matter) 
2 1 
3 3 
4 1 
5 3 

그래서 내가 이벤트 # 1-3 티켓이 판매 된 것을 볼 수는, 이벤트 # 2-0 티켓 및 이벤트 # 3-2 티켓 판매되었습니다.

모든 이벤트를 선택하는 쿼리와 티켓 용량보다 적은 이벤트 용량 인 열 available을 만들려고합니다.

SELECT 
events.id, 
events.name, 
events.capacity, 
events.capacity - COUNT(tickets.id) AS available 
FROM 
events 
INNER JOIN tickets ON events.id = tickets.event_id 

그러나,이 티켓은 아직 판매되었습니다 havn't는 이벤트를 반환하지 않습니다

나는이 쿼리가 있습니다. 나는 그것이 조인의 유형일지도 모른다라고 생각했다. 그러나 나는 성공과 함께 여러 가지 것을 시험해 보았다.

어디서 잘못 될지 잘 모르겠습니다.

SELECT events.id, 
,  events.name 
,  events.capacity 
,  events.capacity - COUNT(tickets.id) AS available 
FROM events 
LEFT JOIN 
     tickets 
ON  events.id = tickets.event_id 
group by 
     events.id, 
,  events.name 
,  events.capacity 

MySQL이 그것을 필요로하지 않는다하더라도, 그것은 group by 절에 명시 적으로 모든 비 집계 열을 나열하는 좋은 방법이있다 : 당신은 거의 다

답변

2

, 그냥 inner joinleft join A를 변경합니다.

+0

감사합니다. 왼쪽 조인을 시도했는데, 부분적으로 그룹을 놓쳤습니다. – Josh

0

가입해야합니다. 내부 조인 대신 왼쪽 조인 시도

관련 문제