Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Trotor

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

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

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

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)

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

@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х больше нету

  • Upvote 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х больше нету

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

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

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

Поделиться сообщением


Ссылка на сообщение

Удалит все ТЕМЫ лс (со всеми сообщениями из них) созданные раньше чем 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

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

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

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...