2013-01-11 2 views
0

팀 정보를 가져 오는 통화 기록 데이터베이스가 있습니다. 이전 MySQL 4.0.16 서버에서 실행되므로 하위 쿼리/뷰없이 데이터를 얻으려고 애쓰며 MySQL/PHP를 아직 처음 접했을 때 올바른 방향으로 밀어 넣기를 찾고 있습니다.하위 쿼리가없는 MySQL 4.0.16 업데이트 테이블

소스 테이블의 형태 :

callid | team | status 
--------------------------- 
15432 | team A | open 
15433 | team B | open 
15434 | team A | onhold 
15435 | team A | closed 
15436 | team A | closed 

와 나는 같이해야하므로 출력 상태에 따라 팀 당 호출 수를 싶습니다 : 하나이 할 수있는

team | open | onhold | closed 
-------------------------------- 
team A | 1 | 1  | 2 
team B | 1 | 0  | 0 

select 문에 있거나 임시 테이블을 사용하면이 중 하나로 여러 쿼리를 사용하여 데이터를 사용하여 전체 팀 정보를 표시 할 수 있습니다.

나는 temp 테이블을 생성하고 onhold 등의 번호에 대해 팀 이름과 0을 채웠지 만, 하위 쿼리없이 팀당 상태 호출 당 숫자 호출을 추가하는 업데이트 명령문이 나오지 않습니다. . MySQL 4.0.16에서 가장 좋은 방법은 무엇입니까? 제공 할 수있는 도움에 감사드립니다.

+0

가능한 중복 [MySQL의 피벗 테이블] (http://stackoverflow.com/questions/7674786/mysql-pivot-table) – RichardTheKiwi

답변

1

당신은 당신이 원하는 형식으로 데이터를 얻을 수있는 경우 표현식으로 집계 함수를 사용할 수 있습니다

select team, 
    sum(case when status = 'open' then 1 else 0 end) Open, 
    sum(case when status = 'onhold' then 1 else 0 end) Onhold, 
    sum(case when status = 'closed' then 1 else 0 end) Closed 
from yourtable 
group by team 

SQL Fiddle with Demo

결과를 참조입니다 :의

| TEAM | OPEN | ONHOLD | CLOSED | 
----------------------------------- 
| team A | 1 |  1 |  2 | 
| team B | 1 |  0 |  0 | 
+0

나를 이길! 나는 조건을 'sum (status ='open ')'으로 바로 가기 겠지만, MySQL은 비교를 위해 1이나 0을 반환 할 것이기 때문에, 당신의 버전은 아마도 더 이식성이있다. – ESG

+0

BlueFeet 및 TheVedge에 감사드립니다. SQL 쿼리 편집기에서 필요한 데이터를 제공하여 PHP를 통해 Google 차트 표 시각화로 전환 할 수있게되었습니다. 나는 내가 만든 임시 테이블에 너무 집중하고 이것이 훨씬 더 간단 할 때 그렇게 작동하게하려고 생각한다. 다시 한 번 감사드립니다! – MrRoboto

+0

@MrRoboto 도와 드리겠습니다. :) – Taryn