2016-08-10 3 views
0
내 주요 테이블, 속성, 구성

:가입 쿼리

커뮤니티 표 :

id (index primary id) 
code (index unique - relates to properties.community_code) 
name 

섹션

id (index primary id) 
community_code 
section_code 
lot (index unique) 

내가이 개 조회 테이블을 표 :

id (index primary id) 
community_id (index - relates to communities.id) 
code (index - relates to properties.section_code) 
name (index) 

내가 커뮤니티 섹션에 의해 많은 수를 요약하고 같은 결과에 커뮤니티 ID, 커뮤니티 이름 및 섹션 이름 반환을 시도하고있다 :

SELECT 
    c.id as 'communityId', 
    p.community_code as 'communityCode', 
    c.name as 'communityName', 
    p.section_code as 'sectionCode', 
    s.name as 'sectionName', 
    COUNT(p.section_code) as 'numLots' 
FROM properties_master p 
JOIN communities c ON p.community_code = c.code 
JOIN sections s ON p.section_code = s.code AND c.id = s.community_id 
GROUP BY p.section_code 
ORDER BY c.name ASC, s.name ASC 
: 여기

|communityId|communityCode|communityName|sectionCode|sectionName|numLots| 
|1   |CAG   |Community CAG|1   |Section 1 |156 | 
|1   |CAG   |Community CAG|2   |Section 2 |44  | 
|1   |CAG   |Community CAG|3   |Section 3 |100 | 
|2   |CKS   |Community CKS|Q   |Section Q |102 | 
|2   |CKS   |Community CKS|X   |Section X |78  | 
|2   |CKS   |Community CKS|Z   |Section Z |10  | 

을 내가 만든 쿼리입니다

numLots의 합계를 수동으로 확인하고 올바르지 않을 때까지 올바르게 실행되는 것 같습니다. 일부는 높고 다른 것은 낮습니다. 흥미로운 점은이 쿼리가 생성하는 모든 데이터를 합하면 총 로트 수가 실제로 속성 테이블의 총 로트와 동일하다는 것입니다.

이 쿼리에 어떤 문제가 있는지 알 수 없습니다.

제안 사항?

답변

1

발견 된 내 실수. community_code와 section_code 모두를 그룹화해야했습니다.

 SELECT 
      c.id as 'communityId', 
      p.community_code as 'communityCode', 
      c.name as 'communityName', 
      s.id as 'sectionId', 
      p.section_code as 'sectionCode', 
      s.name as 'sectionName', 
      COUNT(p.section_code) as 'numLots' 
     FROM properties_master p 
     LEFT JOIN communities c ON p.community_code = c.code 
     LEFT JOIN sections s ON c.id = s.community_id AND p.section_code = s.code 
     GROUP BY p.community_code, p.section_code 
     ORDER BY p.community_code ASC, p.section_code ASC 
: 여기

올바른 쿼리입니다