優れたパフォーマンスのアプローチで SQL クエリを構築したいと考えています。すべてのカテゴリを選択し、このカテゴリに関連付けられているバンドをカウントする必要があります。
構造:
バンド:
id | band_name |cat_id
----------|----------------|------------
1 | Business 1 | 1
2 | Business 12 | 2
3 | Business 123 | 2
カテゴリ:
id | name
----------|----------------
1 | Business 1
2 | Business 12
3 | Business 123
接続:
id | band_id |cat_id
----------|----------------|------------
1 | 1 | 1
2 | 2 | 1
3 | 2 | 1
クエリ:
SELECT c.name AS category_name, (SELECT COUNT(icc.band_id) FROM cms_bands_categories_connections AS icc RIGHT JOIN cms_bands AS ib ON icc.band_id = ib.id) AS bands_sum FROM
cms_bands_categories AS c
JOIN cms_bands_categories_connections AS cc ON
c.id = cc.category_id
GROUP BY
c.id
結果は非常に奇妙です。bands_sum は各行で 3 に評価されます。私の構造を責めないでください。要件仕様の変更により、構造を変更する必要がありました。