этого просто незаложено. (думали уже)
Посему, надо раз в месяц, три месяца, данные сохранять. А это уже человеческий фактор, можно забыть и тп.
ну, почему... запросто.... никтож не требует жестких графиков (не коровуж, какгрица). Просто скажем с последних итогов прошло столько-то дней (замечаем по сообщению о подведении итогов в соответствующей ветке %))))....
дальше делаем один запрос к БД вроде
select user.name, count(msg.id) from msg, user ....бла,бла...
SELECT name, count(msg_id)
FROM users, msgs
WHERE
SELECT users_id from users WHERE name = '$name'
LIKE msgs.user_id
где
Код:
$name
переменная с именем интересующего пользователя
__________________________________ DarkElf[11] - В России реальный запрещающий знак только один - большой бетонный блок посреди дороги. Все остальные предупреждающие: возможно за проезд придется заплатить.
__________________________________ DarkElf[11] - В России реальный запрещающий знак только один - большой бетонный блок посреди дороги. Все остальные предупреждающие: возможно за проезд придется заплатить.
__________________________________ DarkElf[11] - В России реальный запрещающий знак только один - большой бетонный блок посреди дороги. Все остальные предупреждающие: возможно за проезд придется заплатить.
select user.name, count(msg.id) from msg, user ....бла,бла...
PUSH AX BX
КОНЕЧНО ФИГНЯ КАКАЯ
асм тут не при чем. сиквел вполне читабелен и понимабелен простым смертным.
to DarkElf... задача была не по имени пользователя найти сообщения... а вывести 10-ку за период %))
продолжаем умничать %) :
это примерно так делается
(при соответствующей структуре БД, которую к слову мы не знаем, но что-то похожее должно быть)
Цитата:
select user.name, count(msg.id) msgcount from msg, user where msg.author_id=user.id and msg.post_date>'$date_from' group by user.id order by msgcount desc limit 10
вобщем, пока я предложил реанимирующую альтернативу, которая добавляет в рейтинг динамизм и делает его более интересным.
Понятно, что пределу совершенству нет, и что можно периодами считать сообщения, но для этого надо больше напрячься, на что времени пока нету. так что пока - по среднему, ибо времени на такой конкурс много не надо.
__________________________________ Good things come to those who wait
SELECT count(msg_id)
FROM users, msgs
WHERE
users.id LIKE msgs.user_id AND users.user_name LIKE '$user_name'
thaon , цитата:
select user.name, count(msg.id) msgcount from msg, user where msg.author_id=user.id and msg.post_date>'$date_from' group by user.id order by msgcount desc limit 10
Просто попробуйте посмотреть, что именно получается в результате моего запроса=)
Правильно, количество сообщений для определенного в запросе пользователя.
счет ведется по количеству упоминаний id - номера определенного пользователя в таблице сообщений. так что результат должен быть: DarkElf: XXXX
в Вашем запросе группировка ведется по полю ID таблицы user. Зачем группировать уникальное значение? в базе это поле - primary_key для таблицы user, оно не может повторятся.
и потом, объясните, зачем считать ID сообщений и там искать нужного автора, если можно считать ID авторов?
Вообще, проще подсчитать так:
Код:
SELECT user.name, count(msg.autor_id)
FROM
user, msg
WHERE
msg.post_date>'$date_from'
ORDER BY
count(msg.autor_id) desc 10
// Запрос не тестировал.
Его результат должен быть вида:
пользователь1: 11
пользователь2: 10
...
пользователь10: 1
LIKE - это и есть "=" в mysql.. с той лишь разницей, что если использовать "=", то могут не работать операторы типа "%" и "?"
вашу бы энергию и знания наконец применить для общего дела а то все только говорить 2darkelf
ЗЫ - кстати, на твоем подопечном подсайте проблемы, ты, надеюсь, в курсе?
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах