2012-01-20 2 views
7

사용자 테이블에서 도시와 국가의 별개 집합의 출현을 계산하려고합니다.SQL에서 고유 한 여러 열의 계산 발생

테이블과 유사한 출력 설정 :

Cambridge, United Kingdom, 2 
London, United Kingdom, 1 
New York, United States, 1 

은 현재 내가 SQL 쿼리를 실행

userid city  country 
------ --------- -------------- 
1  Cambridge United Kingdom 
2  London  United Kingdom 
3  Cambridge United Kingdom 
4  New York United States 

는 내가 필요로하는 모든 도시의 목록, 발생 횟수와 국가 쌍이다 별개의 쌍을 얻으려면 :

$array = SELECT DISTINCT city, country FROM usertable 

그런 다음 PHP로 배열로 읽어 들이고 배열, 쿼리를 실행하면 배열의 각 행에 대해 각 항목을 계산하려면 :

SELECT count(*) FROM usertable 
WHERE city = $array['city'] 
AND country = $array['country'] 

를 내가 SQL 내 부족한 이해가 모르는 뭔가가있다 있으리라 믿고있어 - 바람직 개입없이,이 작업을 수행하는 올바른 방법 일 것입니다 무슨 PHP의?

Select city, country, count(*) as counter 
from usertable 
group by city, country 

답변

13
select city, country, count(*) 
from usertable 
group by city, country 
+0

놀라운 반응 속도 - 정말 고마워 완벽하게 작동합니다 (최대한 빨리 답변을 받아 들일 것입니다) –

5

은 뭐가 필요에 의해 그룹입니다.

+0

매우 빠른 답변 주셔서 감사합니다. –

1
SELECT cityandcountry, count(*) as occurrences FROM (
    SELECT DISTINCT concat(city, country) FROM tablename 
) as baseview; 

당신이 도시와 국가 preformated하려는 경우, 또는

SELECT cityandcountry, count(*) as occurrences FROM (
    SELECT DISTINCT city, country FROM tablename 
) as baseview; 

하지 않을 경우 :

+0

고마워 - MySQL에서 이것을 시도해보십시오. 그리고 다음과 같은 오류가 발생합니다 : '모든 파생 테이블은 고유 한 별칭을 가져야합니다' –

+0

죄송합니다. 나는 그것을 해결하기 위해 내 대답을 편집했습니다. –

+0

나는 이것이 작동하지 않을 것이라고 생각한다. 각'count (*)'는 OP가 원했던 것이 아닌'baseview'의 총 행수 일뿐입니다. –