топ 10 комментариев каждого сообщения - PullRequest
0 голосов
/ 14 декабря 2010

У меня есть две таблицы. Один для сообщений и один для комментариев. Для каждой записи в таблице сообщений в таблице комментариев будет несколько записей. Теперь я хочу выбрать 5 лучших сообщений и 10 лучших комментариев для каждого сообщения. Моя структура таблицы

Сообщения

MID-сообщение

1 msg 1

2 сообщения 2

Комментарии

CID MID Дата комментария

1 1 Cmnt1 date 1

2 1 Cmnt2 дата 2

3 1 Cmnt3 дата 3

4 2 Cmnt4 дата 4

5 2 Cmnt5 дата 5

Заранее спасибо

-Arun

1 Ответ

1 голос
/ 14 декабря 2010

Ваш вопрос немного расплывчатый. Однако, если у вас есть поле с указанием ваших критериев, чтобы быть "топ", например, голосов:

Для MySQL вы можете использовать оператор select следующим образом:

SELECT * 
FROM comments
JOIN messages ON comments.mid = messages.mid
WHERE messages.mid = 1    
ORDER BY comments.topvotes DESC
LIMIT 10;

Этот запрос даст вам 10 самых популярных комментариев за сообщение 1.

Более сложный запрос для сортировки комментариев к первым пяти сообщениям:

SELECT comments.cid
FROM comments
JOIN messages ON comments.mid = messages.mid
WHERE comments.mid IN(
        SELECT messages.mid
        FROM messages
        ORDER BY messages.votes DESC
        LIMIT 5)
ORDER BY messages.mid, comments.votes DESC;

Но я не могу понять, как ограничить это 10 главными комментариями. Я бы использовал курсор, но в последнее время я слишком много работал с Oracle на Oracle. Так что, если у кого-то есть хорошее решение, как выразить это в одном выделении с помощью подзапроса, пожалуйста, стреляйте ...

...