Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Перезаписать данные из разных таблиц
Kusss  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 11 дней
Карма: 77




В 1 таблице некоторые записи нужно изменить, данными из 2 таблицы
Во 2 таблице хранятся сопоставления `старого номера` и `нового номера`

Если в 1 таблице находиться `старый номер` из 2 таблицы, заменить на `новый номер`

Можно это как-то сделать средствами только Mysql ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 5 месяцев, 16 дней
Карма: 552




PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 11 дней
Карма: 77




UPDATE 
`logs` AS l
INNER JOIN
`com_ru` AS c ON l.tovar = c.ru
SET
l.tovar = c.com
я боюсь это запускать :ph34r:
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 11 дней
Карма: 77




Не работает что-то, думает думает ... и ничего не выдает
Может потому что таблицы большие
в 1 - 118,601 записей
во 2 - 1,902 записи

вот структура 1 таблицы (часть правда)
http://pixs.ru/showimage/1JPG_5461558_14643021.jpg
вот 2 таблица
http://pixs.ru/showimage/2JPG_1793664_14643035.jpg

нужно поменять 211401001115 на 20190240607

помогите разобраться почему не работает, или как это сделать ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3377
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 13 дней
Карма: 170




Это одноразовая операция?
Не проще ли скриптом пройтись?


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 11 дней
Карма: 77




будет 2 разовая.
Один раз сейчас , и чуть позже ещё раз , но уже с того места где закончил.

Скриптом я это могу сделать, думал есть вариант попроще.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 5 месяцев, 16 дней
Карма: 552




Цитата (Kusss @ 8.11.2014 - 22:14)
Не работает что-то, думает думает ... и ничего не выдает

Должно работать... ты запускал это в PMA? так и не дождался завершения операции?
Запусти запрос из скрипта может...
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 11 дней
Карма: 77




вот что выдает, причем я сократил условием 1 таблицу до 2000 строк
Query execution was interrupted
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 5 месяцев, 16 дней
Карма: 552




Не хватает времени все перелопатить...
А индексы стоят на полях l.tovar и c.ru?
Бредовая идея конечно, но если нету индексов, то можно их добавить, запустить запрос, потом удалить, должно ускорить обновление...

Можно попробовать обновлять кусками, в условие WHERE добавить id > 0 AND id <= N, после выполнения опять id > N AND id <= N+ и т.д. но тоже как-то не ахти...
PMСайт пользователя
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 11 дней
Карма: 77




спасибо, завтра попробую
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3377
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 13 дней
Карма: 170




Цитата (Winston @ 9.11.2014 - 01:27)
Можно попробовать обновлять кусками, в условие WHERE добавить id > 0 AND id <= N, после выполнения опять id > N AND id <= N+ и т.д. но тоже как-то не ахти...

Поле ввести булевое, при обновлении выставлять его в true
Обновлять все, для которых это поле false
Запустить скрипт из консоли.

Выбрать из таблиц пару сотен записей и на них отладить запрос со stackoverflow, после этого запустить запрос из консоли и пойти спать.

В общем, все ресурсоемкие вещи делать в консоли.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 11 дней
Карма: 77




Индексы очень помогли - спасибо.
Затронута 55461 строка. ( Запрос занял 3.8293 сек. )
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 5 месяцев, 16 дней
Карма: 552




Цитата (Kusss @ 10.11.2014 - 12:57)
Индексы очень помогли

Значит хорошая была идея smile.gif
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 11 дней
Карма: 77




в продолжении темы.
как изменить имеющийся запрос
UPDATE 
`logs` AS l
INNER JOIN
`com_ru` AS c ON l.tovar = c.ru
SET
l.tovar = c.com
WHERE
CHAR_LENGTH(l.tovar) > 11
что бы не было дубликатов, и сумму соединить
Цитата
4444 - 5
2222 - 2 (меняется на  4444 и сумму приплюсовать к имеющейся)
1111 - 3
Рузультат такой вот
Цитата
4444 - 7
1111 - 3

или лучше в 2 приема сделать ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса