ユーザーが複数のタグを挿入して特定のエンティティを検索できるタグベースの検索を実装しています。1つのエンティティに同じ数のタグを含めることができます。ただし、ユーザーが検索したすべてのタグを結果に表示する必要はありません。
たとえば、ユーザーが「靴」、「革」、「フォーマル」などの3つのタグを入力した場合、これらのタグを1つ以上持つすべてのエンティティをリストに含めることができます。
unionを使用して、これらのキーワードのいずれかを持つエンティティの完全なリストを返していますが、問題は、カテゴリで見つかったタグの数に従ってそれらを並べ替えたいということです。
たとえば、「Shoes」、「leather」、「formal」の3つのタグすべてを持つエンティティは、そのうちの1つまたは2つだけを持つエンティティよりも上に来る必要があります。この種の検索を実行するためのSQL機能はありますか?
[編集]
私のテーブルレイアウトは次のとおりです。
エンティティテーブル
- Entity_name
- Entity_id(auto inc主キー)
タグテーブル
- 鬼ごっこ
- Entity_id
私の目的を解決することができません。このクエリを今すぐ使用する:
select entity.entity_name from entity.entity_id join tags on tags.entity_id=entity.entity_id where tags.tag="first tag"
union
select entity.entity_name from entity.entity_id join tags on tags.entity_id=entity.entity_id where tags.tag="second tag"
union
select entity.entity_name from entity.entity_id join tags on tags.entity_id=entity.entity_id where tags.tag="third tag"
私が言ったように、これは私の目的を解決していません。