cashloveyou
@cashloveyou
Хороший чел

Двойная функция или как вывести пользователей по запросу?

Приветствую , у меня такая проблема есть 2 таблицы Feeds ( Посты ) и Users ( Пользователи ) , в таблице feeds есть entity_id ( Тоесть Автор публикации) и views ( Кол просмотров ) также есть time ( время публикации )
конкретнее пытаюсь вывести пользователей в виде топа по количеству просмотров их публикаций
В функциях нашел вывод последних пользователей а так же шаблон их вывода
function get_latest_users($limit)
{
    $query = db()->query("SELECT id,username,first_name,last_name,avatar FROM `users` WHERE `avatar`!='' ORDER BY `id` DESC LIMIT {$limit}");
    return fetch_all($query);
}

Пробывал писать sql запрос в phpmyadmin с выводом id юзера из таблице Feeds по кол просмотров его постов выводит правильных пользователей , но при попытке вставить в функцию пользователи не выводятся видимо от того что есть только id юзера в таблице (Feeds ) а данных нет , помогите пожалуйста разобраться с php не так уш сильно , пришла только мысль писать двойные функции находил решения в интернете нок моей cms ничего не идет ((
вот сам шаблон
<?php $filter = array(); $page = 1;  $latest_members = people_get_users($filter, $limit); ?>
<div class="people box users-box">
    <div class="title"><?php _lang('people::latest-members')?> <a ajax="true" href="<?php echo url_to_pager('people')?>" class="more-link pull-right"><i class="ion-ios-arrow-forward"></i></a></div>
    <div class="clearfix">
        <?php foreach($latest_members->results() as $user): ?>
            <?php $gender = (isset($user['gender']) and $user['gender']) ? $user['gender'] : null ?>
            <?php $gender_image =  ($gender) ? img("images/avatar/{$gender}.png") : img("images/avatar.png") ?>
            <?php $user_image = $user['avatar'] ? url_img($user['avatar'], 200) : $gender_image ?>
            <a href="<?php echo url($user['username'])?>" ajax="true" class="user" style="background-image: url(<?php echo $user_image ?>)"><h6 class="name"><?php echo get_user_name($user) ?></h6></a>
        <?php endforeach ?>
    </div>
</div>
  • Вопрос задан
  • 205 просмотров
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F
Чтобы получить топ пользователей по количеству просмотров, надо сгруппировать публикации по id авторов, попутно суммируя просмотры. Затем сделать джоин с таблицей пользователей и отсортировать по сумме просмотров:

SELECT u.*, COALESCE(v.v_sum, 0) AS total_views
FROM users u
LEFT JOIN (
  SELECT f.entity_id, SUM(f.views) AS v_sum
  FROM feeds f
  GROUP BY f.entity_id
) AS v ON v.entity_id = u.id
ORDER BY v.v_sum DESC
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы