4

タグで検索し、そのタグを持つすべての記事と、それらが一致する特定のタグの数をリストしたいと考えています。たとえば、次のようなものがあります。

 Page1 - 2 (has css and php tag)
 Page2 - 1 (has only css tag)

クエリ:

SELECT COUNT(t.tag)
FROM a_tags t
JOIN w_articles2tag a2t ON a2t.tag = t.id 
JOIN w_article a ON a.id = a2t.article 
WHERE t.tag = 'css' OR t.tag = 'php'
GROUP BY t.tag
LIMIT 9

COUNT(t.tag)クエリを入れるだけでうまくいくと、良い結果が得られます。しかし、記事の例を追加するIDと、次のエラーが発生します。

エラー: 列 "a.title" は GROUP BY 句に含めるか、集計関数で使用する必要があります LINE 1: SELECT COUNT(t.tag), a.title FROM a_tags t

上記の列をこのクエリに追加するにはどうすればよいですか?

4

2 に答える 2

8

「GROUP BY」句を使用する場合、集約関数でグループ化されていないすべての列を囲む必要があります。GROUP BY リストにタイトルを追加するか、代わりに「min(a.title)」を選択してみてください。

SELECT COUNT(t.tag), a.title FROM a_tags t
JOIN w_articles2tag a2t ON a2t.tag = t.id 
JOIN w_article a ON a.id = a2t.article 
WHERE t.tag = 'css' OR t.tag = 'php' GROUP BY t.tag, a.title LIMIT 9
于 2013-09-24T20:44:56.397 に答える