これが 1 つの MySQL クエリだけで可能かどうか疑問に思っています。
私が作っているのはタグ付けシステムです。したがって、次の 2 つのテーブルがあります。
Tags, id | heading
Tagged, id | image_id | tag_id | timestamp | strength
すべてが正常に機能しますが、タグをユーザーに表示する段階に達し、タグが使用された回数で並べ替える予定です。
つまり、一言で言えば、次のことを行うものが必要です。
- 表示されている現在の画像のすべてのタグを取得します
id = 34
。 - タグが使用された回数をカウントします。
- これらの結果の高いものから低いものへと、タグ リストを並べ替えます。
ジョイン、レフト ジョインなどを調べてみましたが、どれも圧倒されそうで、なかなか理解できません。
誰かがこれを簡単に行う方法を説明できれば、それは素晴らしいことです!
編集
私は現在これを持っています
SELECT tags.id, COUNT( tagged.id ) AS count
FROM tags
INNER JOIN tagged ON tags.id = tagged.tag_id
WHERE tagged.image_id = '1'
GROUP BY tags.id
ORDER BY count DESC
これは、タグが現在の image_id にタグ付けされた回数のみを返します。すべての画像から数えるようにするにはどうすればよいですか?