私は多対多のテーブルを持っています
flyer tagged tags
-----------------------------------
id tid id
flyer_name fid tag_name
そして、私は現在タグ付けされたテーブルで作業しています。私がやりたかったのは、関連するすべての結果を選択し、一致の数で並べ替えることです。
私がレコードを持っているとしましょう...タグ付けされたテーブル
tid fid
---------
80 1
80 2
80 3
2 1
2 2
2 6
1 3
1 4
30 5
30 6
最初に、tid が 2 または 80 であるすべてのフライヤーを選択してから、fid でグループ化したいので、fid 1,2,3 が返されます
そして今 1,2,3 から。フィールド tid if 2 or 80 then +1 で変数 'matches' に CASE を使用してそれらすべてを調べ、すべての fid を一致数でソートし、チラシに属するすべてのタグを返したいと思いました
Desired result
fid matches tags
1 2 80,2 #matched with tags 80,2
2 2 80,2 #matched with tags 80,2
3 1 80,1 #matched with tags 80
6 1 2,30 #matched with tags 2
これが私の現在の mysql コードです。これは機能していません。質問をできる限り簡単にしようとしました。もっと提供する必要があると思われる場合はお知らせください。ありがとう !
SELECT fid , tid , MATCHES FROM leon_tagged
WHERE tid IN (2,80)
CASE tid
WHEN '2' then 1
WHEN '80' then 1
ELSE 0 END AS MATCHES
GROUP BY fid
ORDER BY MATCHES