2014-12-22 2 views
0

내가 가지고있는 다음과 같은 두 개의 테이블 :는 값

items: 
id pr1 pr2 
-------------- 
1  11 22 
... 

및 항목과 관련된 의견의 테이블 :

comments: 
item_id text 
------------ 
1 "cool" 
1 "very good" 
... 

가 지금은 열 item_id pr1 pr2 count(comments)있는 테이블을 얻으려면 . 그것을 얻는 가장 좋은 방법은 무엇입니까? 감사!

+0

당신은 무엇을 시도 했습니까? –

+0

먼저 group_id를 사용하여 item_id, count (주석)를 갖는 주석으로 테이블을 만들 수 있습니다. 그런 다음 해당 테이블을 항목 테이블과 조인 할 수 있습니다. 그러나 더 좋은 방법이 있는지 궁금합니다. – hovo

+0

테이블을 만들지 말고 두 테이블을 모두 조인하고 그룹화하십시오. –

답변

2

를 그냥 하나 개의 쿼리를 수행

SELECT items.id, 
     items.pr1, 
     items.pr2, 
     COUNT(*) AS comment_count 
FROM items 
     INNER JOIN comments 
       ON items.id = comments.item_id 
GROUP BY items.id, 
      items.pr1, 
      items.pr2 
  • fiddle를 참조하십시오.

편집 :

모든 그룹을 해제 열이 그룹화 된 하나의 functionnally 의존하는 경우가 나타납니다 당신이 할 수있는 경우에만이 열을 기준으로 그룹 (야쉬 그랬던 것처럼) :

SELECT items.id, 
     items.pr1, 
     items.pr2, 
     COUNT(*) AS comment_count 
FROM items 
     INNER JOIN comments 
       ON items.id = comments.item_id 
GROUP BY items.id 

참조 :

편집 2 :

두 번째 테이블을 추가하는 방법에 대한 (의이 tags 보자) :

그냥 *에 보내고 COUNT에 갈 수 없다.

SELECT items.id, 
     items.pr1, 
     items.pr2, 
     COUNT(DISTINCT comments.*) AS comment_count, 
     COUNT(DISTINCT tags.*) AS tags_count 
FROM items 
     INNER JOIN comments 
       ON items.id = comments.item_id 
     INNER JOIN tags 
       ON items.id = tags.item_id 
GROUP BY items.id, 
     items.pr1, 
     items.pr2 

한 번만 commentsDISTINCT, 당신은거야 COUNT 각 행을 사용하여, 그리고 tags와 같은 : 그보십시오.

+0

코드가 제대로 작동합니다. 내 코드는 사용되지 않습니다. – Yash

+0

X.L.Ant .......... 좋습니다. 나는 그것을 고맙게 생각한다. – Yash

+0

코멘트, 말하기 태그와 같은 다른 테이블이 있고 최종 결과에 코멘트 수와 태그 수를 모두 표시하려면 무엇입니까? – hovo

3

이 시도 :

select items.id, items.pr1, items.pr2, count(*) as comment from items,comments where items.id = comments.item_id group by items.id 
+0

items.id 만 그룹화하면 작동하지 않습니다. 또한 내재 된 조인 표기는 사용되지 않습니다 (92 이후). –

+0

@ X.L.Ant 시스템에서 사용해보십시오. 그것은 출력을 줄 것이다. 나는 성공적으로 달렸다. – Yash

+0

내가 해냈어 : http://sqlfiddle.com/#!15/e548c/1 작동하지 않습니다. 특정 그룹화 방법이있는 MySQL에서는 사용하지 마십시오. http://dev.mysql.com/doc/refman/5.0/en/group-by-handling.html을 참조하십시오. –