2

次のようなテーブル構造があります。

まだ画像を投稿できないので、割り当てには多くのグループと多くの連絡先があり、連絡先には都市があり、都市には国があります。

割り当ての国をグループごとにカウントしたい

そして、次のクエリがあります

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) の使用は禁止されていますが、これは必要ないと思います。

編集:私は恐ろしい解決策を持っています

助けてください

4

1 に答える 1