Хорошо, у меня есть запрос, который на 90%, он просто выдает ошибку «неизвестный столбец a.UserID в предложении where). Я прочитал, пытаясь разобраться в проблеме, и обнаружил, что когда SQL обрабатывает наизнанкуследовательно, он не будет знать, что я поставил в качестве причины для таблицы A. Но это не в моих знаниях и опыте, чтобы заставить ее работать. Вместо этого я пробовал альтернативный маршрут с JOIN, но всегда возвращаюсь к одной и той же проблеме.
Запрос:
SELECT
a.*,
(SELECT AVG(c.PlayerTime)
FROM (
SELECT PlayerTime
FROM elite_highscores b
WHERE a.UserID = b.UserID
ORDER BY PlayerTime ASC LIMIT 10
) c
) AS avgtime,
MIN(PlayerTime) as besttime,
MAX(TimeAdded) as time,
COUNT(UserID)
FROM elite_highscores a
WHERE Publish = 'Yes'
GROUP BY UserID HAVING COUNT(UserID) >= 10
ORDER BY avgtime ASC
Поэтому я пытаюсь выбрать некоторые цифры из таблицы рекордов (для пользователей, у которых зарегистрировано более 10 рекордов), а также рассчитать среднее время.(avgtime), но только на основе последних 10 очков этого игрока, что и вызывает у меня проблему, все остальное работает нормально.
Структура таблицы:
ScoreID int(16)
UserID int(10)
PlayerScore int(16)
Publish enum('No', 'Hidden', 'Expired', 'Yes')
TimeAdded int(16)
PlayerIP varchar(18)
Country varchar(2)
PlayerTime int(10)
code varchar(50)