1

私は多対多のテーブルを持っています

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
4

1 に答える 1