Ufff, tak přestože nechápu proč to takhle počítáš a jak, tak pokud bych se držel toho že musíš dělat takhle COUNTy z nějakého důvodu, tak tohle je mnohonásobně míň zatěžující SQL dotaz
Kód:
SELECT
wu.id, CONCAT(wu.forename, ' ', wu.surname) AS name, wu.birthdate, wu.avatar, wup.address as address
,( f1.p1/(f2.p2/100) ) as `percent_interest`
,( ( f3.p3 + f4.p4 + f5.p5 + f6.p6 )/(4/100) ) as `mbti`
,( ( f1.p1/(f2.p2/100) + ( f3.p3 + f4.p4 + f5.p5 + f6.p6 )/(4/100) )/3 ) AS `user_percent`
FROM
wc_user wu
JOIN
wc_user_profile wup
ON wu.id = wup.user_id
JOIN
(SELECT COUNT(id) as p1, user_id FROM wc_forms_assign WHERE $clause GROUP BY user_id) f1
on wu.id = f1.user_id
JOIN
(SELECT COUNT(id) as p2, user_id FROM wc_forms_assign GROUP BY user_id) f2
on wu.id = f2.user_id
JOIN
(SELECT COUNT(id) as p3, user_id FROM wc_user_mbti WHERE (first = {$this->mbti['first']} OR first = 'X') GROUP BY user_id) f3
on wu.id = f3.user_id
JOIN
(SELECT count(id) as p4, user_id FROM wc_user_mbti WHERE (second = {$this->mbti['second']} OR second = 'X') GROUP BY user_id) f4
on wu.id = f4.user_id
JOIN
(SELECT count(id) as p5, user_id FROM wc_user_mbti WHERE (third = {$this->mbti['third']} OR third = 'X') GROUP BY user_id) f5
on wu.id = f5.user_id
JOIN
(SELECT count(id) as p6, user_id FROM wc_user_mbti WHERE (quad = {$this->mbti['quad']} OR quad = 'X') GROUP BY user_id) f6
on wu.id = f6.user_id
Dalo to dost práce takže +bod potěší, případně mi můžeš na www.duben.org poslat jako poděkování něco na paypal ;)