MaxxxNSK
@MaxxxNSK
очень начинающий

Как правильно составить mysql запрос?

Есть таблица пользователей с рейтингом и таблица записей, которые оставляют пользователи. Нужно сделать выборку 5 пользователей, оставивших за последний месяц не менее 5 записей в сортировке по рейтингу.

Умею делать только по отдельности, и то криво:
1. подсчет количества записей пользователя
SELECT COUNT( * ) as count FROM table WHERE id_user=$id_user AND date_add > LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND date_add < DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 1 DAY)

2. Вывод 5 пользователей с сортировка по очкам:
SELECT * FROM table2 ORDER by reiting DESC LIMIT 5

Спасибо
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
SELECT
	*
FROM
	table2
WHERE
	user_id IN (
		SELECT
			user_id
		FROM
			table1
		WHERE
			date_add > LAST_DAY(
				DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
			)
		AND date_add < DATE_ADD(
			LAST_DAY(CURDATE()),
			INTERVAL 1 DAY
		)
		GROUP BY
			user_id
		HAVING
			count(*) > 5
	)
ORDER BY
	reiting DESC
LIMIT 5
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы