2017-06-02 3 views
1

によって類似したアイテムは、私は次のデータベース構造を持っている:MYSQL:(用語)関係データベース

画像:id | title | …

キーワード:id | keyword

keyword_relations:keyword_id | image_id

私は似て表示したいの任意の画像の詳細ページに画像が表示されます。これらは他の画像のキーワードによって取り出されるべきです。キーワードの数が多いほど関連性は高くなります。

これまでのところ、私はそれのためにkeyword_relationsだけ必要と見ることができます。

私はこのような何かをしようとしたが、それは動作しません:

$result = $mysqli->query("SELECT keyword_id FROM keyword_relations WHERE image_id=" . $image->id) or die($mysqli->error); 

$in = array(); while ($k = $result->fetch_object()) array_push($in, $k->keyword_id); 

$in = implode(',', $in); 

$result = $mysqli->query("SELECT image_id FROM keyword_relations WHERE keyword_id IN($in) GROUP BY image_id ORDER BY FIELD($in) LIMIT 10") or die($mysqli->error); 

私は順序が問題だと思います。

+0

どのようにあなたがそれで注文したかったことにより、オーダー、可能でしょうか? – maSTAShuFu

+0

最も共通のキーワードを持つ画像は最初の画像にする必要があります –

答えて

0

はcount_

Select images, count(1) count_ 
From .... 
Group by ... 
Order by count_ desc 
Limit ...