Demitsuri

Аналог функции ВПР в PhpMyAdmin

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

Demitsuri    1

Добрый день!

 

Подскажите пожалуйста, есть ли аналог функции ВПР в phpmyadmin?

 

Суть проблемы:

 

Есть экселевский файлик с фактической стоимостью доставки

В файле есть 2 столбца:

order_id и shipping_cost

 

Есть таблица mysql называемая order

В этой таблице есть множество столбцов, а также столбец shipping_cost

Также в этой таблице есть order_id (которые соответствуют order_id в экселевском файле)

 

 

Каким образом можно подставить значения shipping_cost из экселевского файла в файл Order в соответствующие места?

 

 

Спасибо огромное заранее!

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


Ссылка на сообщение
Поделиться на другие сайты
Demitsuri    1

Забыл упомянуть, выгрузка => редактирование => загрузка обратно, - невозможна, в связи с частыми заказами.

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


Ссылка на сообщение
Поделиться на другие сайты
rb2    390

Есть экселевский файлик с фактической стоимостью доставки

В файле есть 2 столбца:

order_id и shipping_cost

 

Есть таблица mysql называемая order

В этой таблице есть множество столбцов, а также столбец shipping_cost

Также в этой таблице есть order_id (которые соответствуют order_id в экселевском файле)

 

Каким образом можно подставить значения shipping_cost из экселевского файла в файл Order в соответствующие места?

Можно создавать временную таблицу, грузить в неё CSV чем-то вроде

`LOAD DATA INFILE 'data.txt' INTO TABLE table2 FIELDS TERMINATED BY ';'`

а потом как-то так:

`UPDATE 'order' o SET o.shipping_cost = (SELECT shipping_cost FROM tmp WHERE tmp.order_id = o.order_id)`

Можно скрипт написать с одним циклом - чтобы читал по одной строке из файла и делал кучу запросов по обновлению.

Можно просто выгрузить из экселя в CSV и массовой заменой подготовить файл с тучей запросов, которые будут одним запросом обновлять штук 50 записей за раз. Вроде должно получиться. И потом просто скопипастить в окно SQL-запросов. Типа было

1; 123

2; 125.34

3; 0

4; 50.00

...

стало

UPDATE `order` SET `shipping_cost` = CASE `order_id`

WHEN 1 THEN 123

WHEN 2 THEN 125.34

WHEN 3 THEN 0

WHEN 4 THEN 50.00

ELSE `shipping_cost` END

Кто неосилятор скриптов на баше, седе, авк, перле - осилит макросами в микрософт продуктах или даже просто колонок добавит в эксель со словами WHEN и THEN, а потом просто выгрузить в текстовый файл и добавить по паре строк в порции (можно и на глазок, по паре экранов).

Я бы сам скорей всего на третьем варианте остановился, по минимуму его автоматизировав.

Ну или на первом.

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


Ссылка на сообщение
Поделиться на другие сайты
Demitsuri    1

Можно создавать временную таблицу, грузить в неё CSV чем-то вроде

`LOAD DATA INFILE 'data.txt' INTO TABLE table2 FIELDS TERMINATED BY ';'`

а потом как-то так:

`UPDATE 'order' o SET o.shipping_cost = (SELECT shipping_cost FROM tmp WHERE tmp.order_id = o.order_id)`

Можно скрипт написать с одним циклом - чтобы читал по одной строке из файла и делал кучу запросов по обновлению.

Можно просто выгрузить из экселя в CSV и массовой заменой подготовить файл с тучей запросов, которые будут одним запросом обновлять штук 50 записей за раз. Вроде должно получиться. И потом просто скопипастить в окно SQL-запросов. Типа было

1; 123

2; 125.34

3; 0

4; 50.00

...

стало

UPDATE `order` SET `shipping_cost` = CASE `order_id`

WHEN 1 THEN 123

WHEN 2 THEN 125.34

WHEN 3 THEN 0

WHEN 4 THEN 50.00

ELSE `shipping_cost` END

Кто неосилятор скриптов на баше, седе, авк, перле - осилит макросами в микрософт продуктах или даже просто колонок добавит в эксель со словами WHEN и THEN, а потом просто выгрузить в текстовый файл и добавить по паре строк в порции (можно и на глазок, по паре экранов).

Я бы сам скорей всего на третьем варианте остановился, по минимуму его автоматизировав.

Ну или на первом.

Огромное спасибо! Попробую вечером :) Хороших Выходных!!!

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


Ссылка на сообщение
Поделиться на другие сайты
Demitsuri    1

3 способ просто супер!!! =) Еще раз спасибо!

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу