Хотите, чтобы 15 самых последних экземпляров были организованы по классам, а затем упорядочены по экземплярам (des c) - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть таблица отзывов. (Предоставление пользователю возможности отмечать, какого игрока получать обзоры.) Я хочу, чтобы отображались 15 самых последних обзоров, сначала организованных по классу игрока, а затем по самому обзору. Некоторые из них будут иметь несколько отзывов в результатах.

ORDER BY p.grade, p.nameLast, r.id desc LIMIT 15 ";

Это выглядит довольно четко, но по мере роста первого сорта он вырастет sh результаты других оценок.

Тогда я попробовал ...

ЗАКАЗАТЬ ПО r.id des c, p.grade, p.nameLast LIMIT 15 ";

... Я не мог понять, как перечислить их в соответствии с оценкой.

Я пробовал GROUP BY, затем ORDER BY, но он просто перечисляет самый последний экземпляр типа.

Я даже пытался использовать GROUP BY r.id, полагая, что он извлечет 15 уникальных идентификаторов rid, но в конечном итоге он дал те же результаты.

Вот мой запрос. (Примечание: он дает нужные мне результаты, кроме того, как их упорядочить.)

        $query = "SELECT *,p.id,b.playerID,b.id,s.toggle AS stoggle,o.toggle AS otoggle,p.city,p.school,s.city,s.school,r.opp_city,r.opp_school,o.city,o.school,r.city,r.school FROM a_players_reviews r 

        LEFT JOIN a_players p 
            ON CONCAT (r.nameFirst,r.nameLast) = CONCAT (p.nameFirst,p.nameLast)

        LEFT JOIN a_schools s 
            ON CONCAT(r.city,r.school) = CONCAT(s.city,s.school)
        LEFT JOIN a_schools o   
            ON CONCAT(r.opp_city,r.opp_school) = CONCAT(o.city,o.school)

        LEFT JOIN a_player_bookmark b
            ON p.id = b.playerID && '". $userID ."' = b.userID

        WHERE p.id = b.playerID && '". $userID ."' = b.userID && bookmark>0
        ORDER BY p.grade,p.nameLast,r.id DESC
        LIMIT 15";

Я просто хочу, чтобы он всегда рисовал 15 самых последних обзоров (r.id), затем упорядочивал их по классам и Имя игрока.

...