У меня есть 4 стола
- игрок (player_id, player_name и т. Д.) Одна строка
- rating (rating_id, player_id, rating, rater_id) несколько строк
- video (video_id, player_id, video) несколько строк
- 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