как получить данные из базы данных MYSQL со смещением и лимитом, тогда как сортировка (упорядочение по нескольким столбцам) и в результате каждая строка получает конкретный пользователь все данные? - PullRequest
0 голосов
/ 19 января 2019

У меня есть 4 стола

  1. игрок (player_id, player_name и т. Д.) Одна строка
  2. rating (rating_id, player_id, rating, rater_id) несколько строк
  3. video (video_id, player_id, video) несколько строк
  4. follower (follower_id, player_id, follower) несколько строк

Я хочу получить 5 записей на каждый свиток с нумерацией страниц.

Мой вопрос: «Поток (сортировка) списков игроков а) Как минимум 1 видео и б) Максимальное число подписчиков и в) Наивысший рейтинг»

При а) условии, я использую

SELECT count(f.follower_id) as countid, f.player_id, p.player_name, 
p.email, p.mobile from player as p, follower as f where 
p.username=f.username group by f.player_id order by countid DESC  
DESC LIMIT $limit OFFSET $offset

Как использовать а) б) в) все три условия в одном запросе для получения желаемого результата

Решено: с использованием подзапроса sql

SELECT (SELECT CAST(avg(r.rating) AS DECIMAL(10,2)) as avgrating FROM 
rating as r WHERE p.player_id=r.player_id ) as avgrating, (SELECT 
count(v.video_id) as countvideo FROM video as v WHERE 
p.player_id=v.player_id) as countvideo, (SELECT count(f.follower_id) 
as countfollower FROM follower as f WHERE p.player_id=f.player_id) as 
countfollower, p.player_id, p.player_name, 
p.email, p.mobile from player as p order by countvideo DESC, avgrating 
DESC, countfollower DESC LIMIT $limit OFFSET $offset
...