Перейти к контенту
  • 0

Подскажите с mysql-запросом


Unico

Вопрос

Надо выбрать

1. в определенном разделе форума

2. где встречается искомое слово в сообщении

2. все сообщения определенного пользователя до определенной даты

3. и поменять этим сообщениям автора (author_id и name)

 

и дополнительно

 

4. поменять топикстартера в таких темах, поскольку пост изменится, но надо еще автора темы поменять

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

скорее всего скрипт писать отдельно будет проще всего

сначала селект ид, топик_ид из постов, а потом два запроса, отдельно на автора и отдельно на тему

как я помню, признак форума хранится в таблице тем, поэтому запрос вида

SELECT p.id, p.topic_id FROM ibf_posts p LEFT JOIN ibf_topics t ON (t.id=p.topic_id) WHERE t.forum_id=___FORUM__ID___ AND p.post LIKE '%__WORD__%' AND p.author_id=___AUTHOR__ID___ AND p.date<'___UNIX_FORMAT_DATE___'

все это исключительно из головы, так что имена полей могут быть другими

Ссылка на комментарий
Поделиться на других сайтах

  • 0

как я помню, признак форума хранится в таблице тем

В таблице сообщений ibf_posts хранится и айдишник темы topic_id, и айдишник форума forum_id.

Но одним запросом конечно же не получится. Мне видится как минимум 7 запросов.

Первым запросом собрать массив айдишников постов, удовлетворяющих условиям, и одновременно массив айдишников топиков.

Вторым запросом собрать массив айдишников первых постов топиков из массива.

Третьим запросом собрать массив последних постов в топиках, выбрав только те, которые удовлетворяют условиям. Одновременно собрать массив топиков, у которых последние посты меняют авторство.

Четвертым запросом изменить авторство постов, полученных первыми двумя запросами.

Пятым запросом изменить поле starter_id в таблице топиков.

Шестым запросом изменить поле last_poster_id в таблице топиков для топиков, полученных третьим запросом.

И наконец седьмым запросом изменить поля last_poster_id и last_poster_name в таблице форумов для тех записей, в которых поле last_id в массиве топиков, изменивших авторство последнего поста.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

насчет автора темы задающий вопрос сказал как-то мутно и непонятно - надо менять автора темы у любой темы, или только у той, которую открыл искомый юзер

 

P.S.

В таблице сообщений ibf_posts хранится и айдишник темы topic_id, и айдишник форума forum_id.

уверен что не ты сам это сделал?

2.1:

CREATE TABLE `ibf_posts` (
 `pid` int(10) NOT NULL auto_increment,
 `append_edit` tinyint(1) default '0',
 `edit_time` int(10) default NULL,
 `edit_reason` varchar(255) NOT NULL default '',
 `author_id` mediumint(8) NOT NULL default '0',
 `author_name` varchar(32) default NULL,
 `use_sig` tinyint(1) NOT NULL default '0',
 `use_emo` tinyint(1) NOT NULL default '0',
 `ip_address` varchar(16) NOT NULL default '',
 `mac_address` varchar(255) default '',
 `post_date` int(10) default NULL,
 `icon_id` smallint(3) default NULL,
 `post` text,
 `queued` tinyint(1) NOT NULL default '0',
 `topic_id` int(10) NOT NULL default '0',
 `post_title` varchar(255) default NULL,
 `new_topic` tinyint(1) default '0',
 `edit_name` varchar(255) default NULL,
 `post_key` varchar(32) NOT NULL default '0',
 `post_parent` int(10) NOT NULL default '0',
 `post_htmlstate` smallint(1) NOT NULL default '0',
 PRIMARY KEY  (`pid`),
 KEY `topic_id` (`topic_id`,`queued`,`pid`),
 KEY `author_id` (`author_id`,`topic_id`),
 KEY `post_date` (`post_date`),
 FULLTEXT KEY `post` (`post`)
) ENGINE=MyISAM

 

(тут несколько добавлено мной, но ничего не удалено)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

уверен что не ты сам это сделал?

ipb\upload\sm_install.php:

$SQL[] = "CREATE TABLE ibf_posts (
pid int(10) NOT NULL auto_increment,
append_edit tinyint(1) default '0',
edit_time int(10) default NULL,
author_id mediumint(8) NOT NULL default '0',
author_name varchar(32) default NULL,
use_sig tinyint(1) NOT NULL default '0',
use_emo tinyint(1) NOT NULL default '0',
ip_address varchar(16) NOT NULL default '',
post_date int(10) default NULL,
icon_id smallint(3) default NULL,
post text,
queued tinyint(1) default NULL,
topic_id int(10) NOT NULL default '0',
forum_id smallint(5) NOT NULL default '0',
attach_id varchar(64) default NULL,
attach_hits int(10) default NULL,
attach_type varchar(128) default NULL,
attach_file varchar(255) default NULL,
post_title varchar(255) default NULL,
new_topic tinyint(1) default '0',
edit_name varchar(255) default NULL,
has_modcomment TINYINT(1) DEFAULT '0' NULL,
PRIMARY KEY (pid),
KEY topic_id (topic_id,author_id),
KEY author_id (author_id),
KEY forum_id (forum_id,post_date),FULLTEXT KEY post (post)
) TYPE=MyISAM;";

 

Это из дистрибутива 1.3

Ссылка на комментарий
Поделиться на других сайтах

  • 0
В двушке сделали многоуровневую вложенность подфорумов, под это видимо поменяли архитектуру.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ух, как сложно )

вопрос попроще...

 

мне надо в тестовой копии форума,

которая будет отдаваться для разработки модов поменять у всех юзеров пароли на какой-то один

и емейлы на какой-то один... удалять мемберов нежелательно, их кол-во важно для теста модов.

 

как это сделать? что-то с replace

 

напомню

таблица ibf_members

поля

password email

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Один запрос. UPDATE ibf_members SET password="qwerty", email="no@spam.me" where mid>0

Имена полей только проверьте, писал по памяти.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.