2016-06-29 3 views
0

조인 된 테이블에서 계산 : 학습자는, 공급자가 각 공급자에 을 많은 학습자 많은 업체를 가지고있다그룹은 다음과 같은 형식 내가 학습자 당 행을 얻기 위해 노력하고

nsn|last_name|first_name|middle_name|gender|ethnicities|providers|qualifications|vocation_PI|vocation_SI|..... 

, 학습자는 많은있다 결과는, 결과는 한 학습자 에 속하는 결과가 하나 개의 표준이 표준이 없음/많은 결과에 속해 표준이가 많은 직업

select l.nsn, l.last_name,l.first_name,l.middle_name, l.gender, GROUP_CONCAT(distinct e.name SEPARATOR '|') as ethnicities, GROUP_CONCAT(distinct p.name SEPARATOR '|') as providers, count(case v.code when 'PI' then 1 else 0 end) as v_PI,count(case v.code when 'SI' then 1 else 0 end) as v_SI,count(case v.code when 'CR' then 1 else 0 end) as v_CR, GROUP_CONCAT(distinct q.name SEPARATOR '|') as qualifications 
from learners l 
join learner_ethnicity le on l.id = le.learner_id 
join ethnicities e on le.ethnicity_id = e.id 
join learner_provider lp on l.id = lp.learner_id 
join providers p on lp.provider_id = p.id 
join results r on lp.id = r.learner_provider_id 
join standards s on r.standard_id = s.id 
join standard_vocation sv on s.id = sv.standard_id 
join vocations v on sv.vocation_id = v.id 
join learner_qualification lq on l.id = lq.learner_id 
join qualifications q on lq.qualification_id = q.id 
group by l.id 

나는 각 직업이 작동 할 수를 얻을 질수; 나는 각 카운트 필드에 같은 값을 얻을 수 (모든 카운트 또는 어떤 총이 있는지 확실하지 않습니다)

예상 출력 :

123451234 | Doe | John | James | M | European|Maori | SecondaryProvider|TertiaryProvider | NCEA Level 1|NCEA Level 2|Farming PHD | 185 | 430 | ..... 

실제 출력 :

123451234 | Doe | John | James | M | European|Maori | SecondaryProvider|TertiaryProvider | NCEA Level 1|NCEA Level 2|Farming PHD | 500 | 500 | ..... 

어떤 제안이?

답변

1

SUM과의 COUNT 당신이

select l.nsn, l.last_name,l.first_name,l.middle_name, l.gender, GROUP_CONCAT(distinct e.name SEPARATOR '|') as ethnicities, GROUP_CONCAT(distinct p.name SEPARATOR '|') as providers, sum(case v.code when 'PI' then 1 else 0 end) as v_PI, sum(case v.code when 'SI' then 1 else 0 end) as v_SI,sum(case v.code when 'CR' then 1 else 0 end) as v_CR, GROUP_CONCAT(distinct q.name SEPARATOR '|') as qualifications 
from learners l 
join learner_ethnicity le on l.id = le.learner_id 
join ethnicities e on le.ethnicity_id = e.id 
join learner_provider lp on l.id = lp.learner_id 
join providers p on lp.provider_id = p.id 
join results r on lp.id = r.learner_provider_id 
join standards s on r.standard_id = s.id 
join standard_vocation sv on s.id = sv.standard_id 
join vocations v on sv.vocation_id = v.id 
join learner_qualification lq on l.id = lq.learner_id 
join qualifications q on lq.qualification_id = q.id 
group by l.id 
+0

수 (사례 v.code 다음 'PI'1 개 다른 공 끝) 당신이 확인하는 경우는 1 또는 0 값을 줄 것을 원하는 것을 얻을 것 교체하여 그것을 카운트하는 것은 총 카운트와 같습니다. –

+0

너무 쉬워요! 고마워요. – Wing5wong

관련 문제