4

そのため、少し調整しようとしている特定のクエリがあります。プロジェクトのニーズが少し変わりましたが、これにどのようにアプローチすればよいかわかりません。

メインテーブル、「タグ」テーブル、そしてタグをメインエントリに結び付けるリンクテーブルの 3 つのテーブルがあります。しわは、そのリンケージに与えられた重みがあり、それがメイン テーブルの特定の Name エントリにリンクされたタグの合計重みを合計するために使用されることです。つまり、メイン エントリには複数のタグがあり、それぞれ重みが異なります。現在のクエリは、すべてのタグの重みを合計し、すべてのタグの合計で並べ替えます。

UID  | Name 
-----------------
123  | Robert


UID  | Tag_Name 
-----------------
1    | Name_One
2    | Name_Two


Tag_ID  | Name_ID    | Weight
-----------------------------
2       | Name_One   |  2
1       | Name_Two   |  3
1       | Name_One   |  5

現在、2,1 は一致させようとしているタグ ID の文字列です。

SELECT person.id, 
   SUM(linkage.weight) AS total_weight 
   FROM (person) 
   INNER JOIN linked_tags AS linkage 
   ON linkage.track_id = person.id AND linkage.tag_id IN (2,1) 
   GROUP BY person.id 
   HAVING COUNT(DISTINCT linkage.tag_id)=1 
   ORDER BY total_weight DESC

これを別の用途に拡張したい。現在、文字列として渡されるタグ ID は減法です。特定の人物 ID に対して両方のタグ ID が存在する一致のみを検索します。ID の別の文字列を渡したい場合、任意の人の ID がその文字列のタグ ID のいずれかと一致し、その後に現在の ID の減算文字列が続き、それらのタグの重みを合計すると、どうすればよいでしょうか?

4

1 に答える 1