как сделать запрос mysql выбор всех максимум из группы с условиями?
есть 3 таблицы. есть выборка, но нужно выбрать все статьи с максимальными рейтингами из всех источников (категорий) одним mysql запросом
SELECT
mn2.max_r,mn.rating,
mn.*,mnc.news_category_name,
mnc.long_name,
u.username,
u.first_name,
u.last_name
FROM (
SELECT MAX( nnnn.rating) max_r FROM news nnnn
LEFT OUTER JOIN news_categories mnc1 ON mnc1.news_category_id = nnnn.news_category_id
WHERE (upper(mnc1.long_name) like upper('категория 1'))
AND nnnn.STATUS = 'published' AND (DAY(nnnn.news_date) = '1') AND (MONTH(nnnn.news_date) = '1') AND (YEAR(nnnn.news_date) = '2013')
GROUP BY id_source
) mn2
INNER JOIN news mn
ON ( mn2.max_r = mn.rating)
LEFT OUTER JOIN news_categories mnc ON mnc.news_category_id = mn.news_category_id
LEFT OUTER JOIN users u ON u.user_id = mn.author_id
WHERE mn.status = 'published' AND (upper(mnc.long_name) like upper('категория 1'))
AND ( DAY( mn.news_date ) = '1') AND ( MONTH ( mn.news_date ) = '1') AND ( YEAR ( mn.news_date ) = '2013')
GROUP BY id_source
ORDER BY rating DESC
первый вложенный запрс формирует все масимумы по условию но с неправильными номерами статей,
затем по нем проганяется join и выбираются правильные записи... совпадающими с масимумом, чтобы не учитывать повторяющтеся рейтинги или нулевые используются дважды
GROUP BY id_source
Комментарии
Оставить комментарий
Базы данных - MySql (Maria DB)
Термины: Базы данных - MySql (Maria DB)