Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Перенос данных с одного столбца в другой

Нужно перенести данные с одного столбца в другой, столбцы в разных таблицах. Выполняю запрос:

REPLACE INTO принимающая таблица(`принимающий столбец`) SELECT столбец отправитель FROM таблица отправитель

 

Майадмин пишет что действие удачно выполнено. Но результата никакого - данные не заменились.

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

Недостаточно информации.

 

1. Столбцы уже есть?

2. Другие столбцы в таблице есть?

3. На чем строится связь между строками таблицы? И есть ли она вообще?

 

В зависимости от ответов запрос может совершенно изменяться от:

 

UPDATE table1 t1 SET t1.column1 = (SELECT t2.column2 FROM table2 t2 WHERE t2.id = t1.id)

 

до:

 

INSERT INTO table1 SELECT * FROM table2

 

Ваш запрос не выполняется, т.к. REPLACE работает по ключу, а ключа у вас, скорее всего, нет.

  • Автор
1. Столбцы уже есть?

Да.

 

2. Другие столбцы в таблице есть?

Тоже есть.

 

3. На чем строится связь между строками таблицы? И есть ли она вообще?

Дело в том что у меня стоял мод [EN30] Ajax Thanks v1.0.2, затем обновил до версии 1.0.5. Всё прошло успешно, за исключением того что число выставленного количества благодарностей у юзеров обнулилось. Как оказалось в старой версии мода числовое кол-во спасибо находилось в таблице members (столбец thanked), тогда как в новой версии мода это значение перенесено в таблицу profile_portal (столбец также thanked).

Вот я и решил заменить их.

Ага, т.е. переносите столбец thanked из members в profile_portal.

 

Тогда запрос такой:

 

UPDATE profile_portal pp SET pp.thanked = (SELECT m.thanked FROM members m WHERE m.member_id = pp.pp_member_id)

  • Автор

@Ritsuka,

Вчера вы меня спасли и сегодня. Спасибо большое.

  • Автор

Ещё один вопрос по запросам к базе.

Хочу удалить приватные сообщения которые старше скажем 3 месяцев.

По определённым юзерам запросы составил, и они выполнились:

DELETE FROM ibf_message_posts WHERE msg_author_id=1
DELETE FROM ibf_message_topic_user_map WHERE map_user_id=1
DELETE FROM ibf_message_topics WHERE mt_to_member_id=1
DELETE FROM ibf_message_text WHERE msg_author_id=1

 

А вот по времени - незнаю как составить.

DELETE p.*, um.*, t.* FROM ibf_message_posts p, ibf_message_topic_user_map um, ibf_message_topics t
WHERE t.mt_date < UNIX_TIMESTAMP('2012-02-01') AND p.msg_topic_id=t.mt_id AND um.map_topic_id=t.mt_id

 

Удалит все ТЕМЫ лс (со всеми сообщениями из них) созданные раньше чем 2012-02-01

 

PS

ibf_message_text в 3х больше нету

  • Автор

DELETE p.*, um.*, t.* FROM ibf_message_posts p, ibf_message_topic_user_map um, ibf_message_topics t
WHERE t.mt_date < UNIX_TIMESTAMP('2012-02-01') AND p.msg_topic_id=t.mt_id AND um.map_topic_id=t.mt_id

 

Удалит все ТЕМЫ лс (со всеми сообщениями из них) созданные раньше чем 2012-02-01

Большущее Спасибо!

 

PS

ibf_message_text в 3х больше нету

Ага. Эта таблица ещё осталась от версии форума 1.3 На днях её снёс.

  • Автор

Всё отлично, вот только с таблицы ibf_message_topic_user_map практически ничего не удалено. Как составить запрос только по этой таблице?

Значит там ничего больше удалять не нужно. Лучше не трогать.

  • Автор

Значит там ничего больше удалять не нужно. Лучше не трогать.

Просто остались пустые маркеры, вот как на скрине:

post-31497-0-88527900-1339845655_thumb.gif

  • 3 года спустя...
  • Автор

Удалит все ТЕМЫ лс (со всеми сообщениями из них) созданные раньше чем 2012-02-01

А можно такой же запрос составить, только что бы в нём было время скажем с 10.02.2015 по 04.01.2016?

А можно такой же запрос составить, только что бы в нём было время скажем с 10.02.2015 по 04.01.2016?

Тут обычное сравнение чисел

Можете так

DELETE p.*, um.*, t.* FROM ibf_message_posts p, ibf_message_topic_user_map um, ibf_message_topics t
WHERE t.mt_date > UNIX_TIMESTAMP('2015-02-10') AND t.mt_date < UNIX_TIMESTAMP('2016-01-04') AND p.msg_topic_id=t.mt_id AND um.map_topic_id=t.mt_id

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.