@VoteyDiscipleの
SELECT c.id, c.title,
SUM(ts1.section_id = 1) AS doc1,
SUM(ts1.section_id = 2) AS doc2,
SUM(ts1.section_id = 3) AS doc3,
SUM(ts1.section_id = 4) AS doc4
FROM category AS c
LEFT JOIN category_link_section AS ts1
ON (c.id = ts1.category_id)
GROUP BY c.id;
説明:
-
IF()
等式はすでに1または0を返すため、式は冗長です。 -
ts1.section_id=1
を取得します 結合条件から外れると、他のsection_id
を取得できなくなります 値。 -
c.id
でグループ化 それだけ。 OPには、カテゴリごとに1つの行と、各section_id
のカウントの列のみが必要であると想定しています。 それぞれのカテゴリの値。クエリがc.id, ts1.section_id
でグループ化されている場合 、カテゴリごとに最大4行になります。 - 選択リストのコンマを移動します。行の先頭に浮かんでいるコンマは見苦しいです。;-)