![]() |
Показаны 12 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- VBulletin 3.x.x (http://netadmin.ws/forum/forumdisplay.php?forumid=74)
-- [seek] Кто автор сообщения под номером № на форуме (http://netadmin.ws/forum/showthread.php?threadid=10278)
[seek] Кто автор сообщения под номером № на форуме
На главной странице форума есть внизу "раздел" Статистика форума, в к-ром перечисляется сколько на форуме создано тем, сообщений, зарегистрировано пользователей.
Интересует вопрос - как можно узнать кто запостил на форуме например 500-тое сообщение. Не 500-тое сообщение в личном активе, а именно пятисотое сообщение в сумме на всем форуме.
Зачем это нужно - ну к примеру можно каждому человеку, к-рый запостит сообщение и оно окажется в сумме всех сообщений на форуме скажем 500-тым, то ему полагается приз какой-то... Сразу же скажу что номер сообщения, что прописуется в УÐ_Л это не то.
ЗЫ: надеюсь всем понятно что не обязательно что 500-тое сообщение должно быть, можно любое. Ð_ылся в админке где бы это там вычислить, так и не нашол. Может хак есть какой
?
Xrobak
А если сообщение какое-то будет удалено, то автор 500-го уже другой получается и так круговорот постоянный?
__________________
miXei.ru - Дискуссионный клуб 
miXei
да, круговорот, но мне собственно нужно один раз узнать кто запостил 500 сообщение, дать ему приз к примеру и жадть кто запостит уже к примеру 1000-ное сообщение и т.п. А далее - удаляй не удаляй посты, это уже не важно, приз дан и все 
ЗЫ: и все же ближе к вопросу - как такое сделать то? Отследить визуально это очень-очень проблематично...
вижу, на конкретные вопросы отвечать не умеем...
select username from post where postid = '500';
quote:
вижу, на конкретные вопросы отвечать не умеем...
quote:
select username from post where postid = '500';
quote:
Сразу же скажу что номер сообщения, что прописуется в УÐ_Л это не то.
Т.е. тебе нужен автор конкретно 500-го поста по счёту, который сейчас в базе после всех удалений. А не с postid = 500. Так?
Тогда вот так:
select username from post order by postid asc limit 499, 1;
Спасибо, с меня 5! Совсем забыл про limit, хм...
prosto
А как на счет постов, мягко удаленных? ...
__________________
.
quote:
Первоначальное сообщение от GenUS
prosto
А как на счет постов, мягко удаленных? ...
Ну ... в 3-й вобле есть две возможности удаления постов/тем: безвозвратно (жесткое удаление) и с возможностью восстановления (мягкое удаление) .... во втором случае посты только отмечаются как удаленые и остаются в базе ...
__________________
.
Понял, о чём ты.
Информация о "мягко" удалённых постах и темах лежит в deletionlog.
Причём, primaryid может случайно совпадать...
Поэтому, в один запрос тут никак.
В общем, enjoy:
set @deleted_posts := '|';
set @posts_in_deleted_threads := '|';
select @deleted_posts := concat(@deleted_posts, primaryid, '|') from deletionlog where type = 'post';
select @posts_in_deleted_threads := concat(@posts_in_deleted_threads, postid, '|') from deletionlog, post where type = 'thread' and threadid = primaryid;
select username, postid from post where @posts_in_deleted_threads not like concat('%|', postid, '|%') and @deleted_posts not like concat('%|', postid, '|%') order by postid asc limit 499, 1;
| Формат времени GMT. Текущее время 04:59. | Показаны 12 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.