2014-02-24 2 views
1

나는COUNT (DISTINCT)는

DISCUSSION있는 단일 선택 문에서 값을 검색 할 3 표, DISCUSSION_COMMENT에서 USER_INFO & DISCUSSION_COMMENT.

이, 난 내가가 필요 USER_ID 열을 얻었다 고유 항목을 계산하십시오.

여기에서 나는

SELECT COUNT(DISTINCT USER_ID) FROM DISCUSSION_COMMENT

과 그 작업 벌금을 사용했다.

는하지만 난

처럼 DISCUSSION_COMMENT 테이블의 총 수

을 찾기 위해하는

DISCUSSION, USER_INFO에서 모든 행 값을 얻을 수있는 하나의 선택 성명을 발표하고 DISCUSSION의 값 DIS_ID을 사용하여 원하는

SELECT COUNT(DISTINCT USER_ID) 
FROM DISCUSSION_COMMENT 
WHERE DISCUSSION_COMMENT.DIS_ID=DISCUSSION.DIS_ID 

여기서 DIS_ID는 DISCUSSION_COMMENT의 외래 키입니다.

답변

0

귀하의 질문에 명확하지 않습니다.

SELECT COUNT(DISTINCT SCHEMA.USER_ID) 
FROM DISCUSSION_COMMENT 
JOIN DISCUSSION ON DISCUSSION_COMMENT.DIS_ID=DISCUSSION.DIS_ID 

영어로,이 토론에 댓글을 한 다른 사용자의 수를 계산합니다 : 당신이에 가입해야처럼 보인다. 내가 @Bohemian에 동의

SELECT COUNT(DISTINCT SCHEMA.USER_ID) 
FROM DISCUSSION_COMMENT 
WHERE DIS_ID IS NOT NULL 
0

나는 또한 당신이 MySQL의에서 COUNT()를 사용하지 않는 제안 : 당신이 외부 키 컬럼에 참조 무결성이있는 경우 DIS_ID null가 아닌 경우

, 당신은 단지 확인하실 수 있습니다 쿼리의 경우 행 수가 많으면 서버에 스트레스가 생기고 PHP에서 기본 count() 함수를 사용하여 총 결과를 얻거나 코딩에 해당하는 프로그래밍 언어로 해당 결과를 얻을 수 있습니다.

+0

이 나쁜 솔루션입니다 :

는 DB2, 나는 집계 쿼리를 건의 할 것입니다. 모든 행을 반환하는 것은 데이터베이스 서버에서 계산하는 것만큼이나 느립니다. MySQL 제한 사항을 최적화해야하는 경우 토론 테이블에'comment_count' 열을 만들고 주석을 작성하거나 삭제할 때마다이를 업데이트 할 수 있습니다. – Leons

+0

@Leons를 사용하면 SQL 쿼리에서 COUNT를 뺀 값을 사용하는 것이 좋습니다. –

0

이 질문은 MySQL 질문입니까 아니면 DB2 질문입니까? 둘 다 태그가 지정됩니다.

SELECT COUNT(dc.user_id), dc.dis_id 
FROM discussion_comment dc, discussion d 
GROUP BY dc.dis_id 
HAVING dc.dis_id = d.dis_id