3つのテーブルを持つデータベースがあります
フィールドを持つ記事: id: int name: varchar(255) text: text
フィールドを持つタグ: id: int name: varchar(255))
次のフィールドを持つ article_tag: id: int article_id: int (外部キー => article.id) tag_id: int (外部キー => tag.id)
複数のタグに関連付けられた記事を検索できるようにしたい。
私が行った場合:
SELECT article.name FROM article
JOIN article_tag ON article.id = article_tag.article_id
JOIN tag ON tag.id = article_tag.tag_id
WHERE tag.name IN ('science', 'technology', ... );
私はすべての記事を返します*(それが持っているタグの数); これは予想されていました。
私の質問: article.id の頻度の降順でリストされるように (リスト内の上位にあるほど、一致するタグの要求が多くなるという効果で)、またはレコードのみを返すように、それを改良する方法はありますか?すべてのタグに一致します (結果の出現数 = タグの数)。
ありがとう、申し訳ありませんが、この質問はより適切にフォーマットされていませんでした