次のようなテーブル構造があります。
まだ画像を投稿できないので、割り当てには多くのグループと多くの連絡先があり、連絡先には都市があり、都市には国があります。
割り当ての国をグループごとにカウントしたい
そして、次のクエリがあります
SELECT `parentCountry`.`id` as label ,count(`t`.`id`) as result, `parentGroup`.`description` as gr
FROM `assignment` `t`
LEFT OUTER JOIN `assignment_contact` `assignmentContacts`
ON (`assignmentContacts`.`assignment`=`t`.`id`)
LEFT OUTER JOIN `contact` `relatedContact`
ON (`assignmentContacts`.`contact`=`relatedContact`.`id`)
LEFT OUTER JOIN `locator_city` `location`
ON (`relatedContact`.`city`=`location`.`id`)
LEFT OUTER JOIN `locator_country` `parentCountry`
ON (`location`.`country`=`parentCountry`.`id`)
LEFT OUTER JOIN `assignment_group` `activeGroup`
ON (`activeGroup`.`assignment`=`t`.`id`) AND (activeGroup.active=1)
LEFT OUTER JOIN `group` `parentGroup`
ON (`activeGroup`.`group`=`parentGroup`.`id`)
GROUP BY gr,label
ORDER BY gr
このクエリを実行すると、次のような結果が得られます
Group1 ,Belgium, 6
Group1 ,Nederlands,3
Group2, Belgium, 1
Group2, UK,6
結果を出したい
Group1 ,Belgium, 6
Group1 ,Nederlands,3
Group1 ,UK, 0
Group2, Belgium, 1
Group2, UK,6
Group2, Nederlands,0
助けてください、私は結合をいじってかなりの時間を費やして、この問題にアプローチする「理論的な」方法がないと結論付けました。
UNIONS (つまり FULL OUTER JOINS) の使用は禁止されていますが、これは必要ないと思います。
編集:私は恐ろしい解決策を持っています
助けてください