Перейти к контенту
  • 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

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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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