Похожие статьи из базы

lelik17

Новичок
Есть задача: вывести из базы статьи, которые смотрели другие пользователи сайта, отсортировав по количеству просмотров других пользователей. Каждый просмотр статьи запоминается в таблицу views (id, user_hash, article_id, date).
Не могу сообразить как на основе этих данных получить список из article_id максимально подходящих для данной.

Делаю так, но здесь совсем нет сортировки по количеству просмотров, да и article_id будет повторяться.

PHP:
$res = mysql_query("SELECT user_hash FROM views WHERE article_id='$global_article_id' AND user_hash!='$my_hash'");
$rows = mysql_num_rows($res);
                	
for ($i=0; $i<$rows; $i++) {
$user_hash = mysql_result($res, 0, user_hash);
$result = mysql_query("SELECT article_id FROM views WHERE user_hash='$user_hash'");
$ro = mysql_num_rows($result);

for ($g=0; $g<$ro; $g++) {
$article_id = mysql_result($result, $g, article_id);
print $article_id;
}
                	
}
 

lelik17

Новичок
Подумал вот над таким способом реализайции: запоминаем все article_id в массив, затем считаем количество повторений каждой article_id в другом массиве и сортируем по количеству повторений. Но может есть решение проще?
 

prolis

Новичок
как-то так
Код:
select v2.article_id, count(*)
from views v1, views v2
where v1.user_hash=v2.user_hash
and v1.article_id<>v2.article_id
and v1.article_id=$global_article_id
group by v2.article_id
having count(*)>1
order by 2 desc
limit 5
 
Сверху