2010-06-25 6 views
1

데이터베이스를 쿼리하고 단일 열에있는 각 ID의 발생 횟수를 확인하고 싶습니다. 이 쿼리에 관련된하나의 열에 여러 개의 값이 있습니다.

두 테이블은 다음과 같습니다 카테고리 :이 테이블의 범주에 뉴스 항목을 지정하는 데 사용됩니다, 각 뉴스 항목 수 :이 테이블 제목

id | title 
---------- 
1 | project 
2 | tech 
3 | other 

category_news 모든 범주의 목록이 있습니다 여러 범주

에있을
id | category_id | news_id 
-------------------------- 
1 | 1   | 2 
2 | 1   | 5 
3 | 1   | 3 
4 | 2   | 4 
5 | 3   | 2 
6 | 3   | 1 
나는 결과 좀하고 싶습니다

(나던, 난 그냥 반환 된 결과의 예를 들어 아래의 배열을 사용하여 쿼리의 결과를 정렬 할 수 있습니다 배열을해야) :

array(
'project' => 3 
'tech' => 1 
'other' => 2 
); 

여기서 키는 카테고리 제목이고 값은 각 카테고리의 뉴스 항목의 총 개수입니다.

select count(cn.category_id), c.title from category_news cn join categories c on c.id = cn.category_id where category_id = 1 

하지만 내 문제는 내가 모든 수를 얻기 위해 하나 개의 쿼리로 그것을 할 수있다 : 나는 각 범주에 대한 쿼리와 함께 할 수 있다는 것을 알고? 100 가지 범주가 100 가지 질문을하는 것처럼 나는 그것을 하나의 방식으로하고 싶습니다.

SELECT  c.title, count(cn.category_id) 
FROM  categories c 
LEFT JOIN categories_news cn 
ON   c.id = cn.category_id 
GROUP BY c.title 

답변

1

이 시도를 감상 할 수있다. 당신이 작동 (테스트)합니다

SELECT count(*) , c.title FROM category_news cn JOIN categories c ON c.id = cn.category_id WHERE 1 GROUP BY cn.category_id

+0

롤, 나는 이제 긴 질문을 작성하기위한 약간 바보에게 너무 간단 느낌 :) 감사. – Luke

+0

아무런 문제가없는 친구, 바보 같은 느낌이 들지 않습니다 :-) – acm

0

예, 할 수 있습니다

어떤 도움이 많이

감사

누가 복음

1

제 (테스트) 다음과 같은 쿼리를 사용해야합니다 :

SELECT COUNT(cn.category_id), c.title 
    FROM category_news cn 
    JOIN categories c ON c.id = cn.category_id 
    GROUP BY cn.category_id 
관련 문제