staRika
@staRika

Как правильно составить запрос с несколькими Select и Limit в одном запросе?

окей. переформулирую вопрос полностью.
имею растущую базу и sql запрос к ней, который должен выводить все записи из разных таблиц, но несколько записей в одной таблице он должен пересчитывать с лимитом, но, при этом, результат всего запроса должен быть с другим лимитом.

сам запрос такой:

SELECT 
	playerId, 
	matches, 
	x.kills, 
	x.match_id, 
	x.player_name, 
	x.steam_id_64 
FROM 
	hlstats_PlayerUniqueIds 
	JOIN (
		SELECT 
			count(steam_id_64) as matches, 
			sum(kills) as kills, 
			match_id, 
			player_name, 
			steam_id_64 
		FROM 
			match_player_stats 
		GROUP by 
			steam_id_64 
		ORDER by 
			id DESC
	) x ON steam_id_64 = CAST(LEFT(hlstats_PlayerUniqueIds.uniqueId,1) AS unsigned) + CAST('76561197960265728' AS unsigned) + CAST(MID(hlstats_PlayerUniqueIds.uniqueId, 3,10)*2 AS unsigned)
GROUP by 
	uniqueId 
ORDER by 
	matches DESC
LIMIT 
	0, 30


как сделать так, чтобы запрос в JOIN был лимитирован по match_id?
где у каждого steam_id_64 ровно по 10 последних match_id.
сейчас он вызывает и суммирует все записи в match_player_stats, а должен только последние 10 по match_id, т.е. 2000 1999 1998 ... 1990.
если просто добавлять в него LIMIT 10, он будет считать последние 10 записей во всей таблице, и это не то, что нужно...

инфа о базе mysql:
Версия клиента базы данных: libmysql - 5.5.68-MariaDB || Версия PHP: 5.4.16
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 1
Если нужно за последние 10 дней, то и в подзапрос нужно добавить нужное условие WHERE. LIMIT просто ограничивает вывод запроса. Формируйте запрос по частям, потом соберете все в кучу.
Ответ написан
Ваш ответ на вопрос

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

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