私のシナリオはこれです:
次のような構造を持つ 3 つのテーブルがあります。
articles: article_id, more data;
tags: tag_id, tag_name, more data;
article_tags: article_tag_id, tag_id, article_id
各記事には複数のタグを付けることができます。記事(article_idが付与されている)のタグを総使用回数順に取得したい。
例:
Article1 has tags 'tag4', 'tag3', 'tag2'
Article2 has tags 'tag4', 'tag3'
Article3 has tags 'tag4'
Article4 has tags 'tag4', 'tag3', 'tag2', 'tag1'
したがって、article4 のタグを探しているときは、次のように並べ替える必要があります。
1. tag4 (4 occurrences)
2. tag3 (3 occurrences)
3. tag2 (2 occurrences)
4. tag1 (1 occurrence)
これは 1 つの MySql クエリで可能ですか? 現在、その記事のすべてのタグを取得し、次にタグのリストを出現順に並べた別の配列を取得し、後者を使用して前の配列を手動でソートしています。