2017-04-07 4 views
0

저는 두 개의 조인 된 테이블에서 몇 개의 비즈니스 이름과 카운트 결과를 선택하는 아주 간단한 직선 쿼리를 사용합니다. 어떤 이유로 규칙 번호가 규칙에 대해서만 맞지만 규칙과 동일한 수의 제안을받습니다.두 개의 조인 된 테이블의 개수가 동일하지 않아도 동일하게 표시됩니다.

예를 들어 2 개의 제안과 6 개의 규칙이 있습니다. 반환 된 결과는 모두 6으로 표시됩니다.

무엇이 누락 되었습니까?

SELECT 
    business_profile.busID, 
    business_profile.busName, 
    COUNT(business_offers.ofr_id) AS cntOffers, 
    COUNT(business_rules.rule_id) AS cntRules 
FROM business_profile 
LEFT JOIN business_offers ON (business_offers.ofr_busID = business_profile.busID) 
LEFT JOIN business_rules ON (business_rules.rule_busID = business_profile.busID) 
WHERE business_profile.busID > 1 
GROUP BY business_profile.busID 
ORDER BY cntRules DESC, cntOffers DESC 
LIMIT 20 
+0

시도'COUNT (DISTINCT ...) '(즉, null 값이 계산되지 제외) 그렇지 않으면 당신은 그냥 행의 수를 계산하고 – Barmar

+0

는, 열 이름은 무관하다. – Barmar

답변

3

DISTINCT을 사용하면 같은 ID를 여러 번 계산하지 않습니다.

SELECT 
    business_profile.busID, 
    business_profile.busName, 
    COUNT(DISTINCT business_offers.ofr_id) AS cntOffers, 
    COUNT(DISTINCT business_rules.rule_id) AS cntRules 
+1

그게 다야! 신속한 대응에 감사드립니다. – santa