ВНУТРЕННЕЕ СОЕДИНЕНИЕ 3 таблицы со ссылкой INFILE - PullRequest
1 голос
/ 22 марта 2019

У меня есть csv с двумя столбцами, col1 - это штрих-код, col2 - количество на складе.

У меня есть 3 таблицы. Таблица1: product_option_value Поля: product_option_value_id, product_option_id, product_id, option_id, option_value_id, количество, вычитание, цена, префикс цены, баллы, точка префикса, вес, префикс веса

Таблица2: product_option_newvalue Поля: product_id, product_option_value_id, sku, upc

Я пытаюсь обновить поле QUANTITY таблицы product_option_value, используя sku и количество в моем CSV-файле. У меня возникла проблема: мне нужно использовать product_option_value_id в product_option_newvalue для обновления поля QUANTITY в product_option_value, как бы я сослаться между ними?

Вот что у меня есть. Это не работает.

CREATE TABLE oc_product_import LIKE oc_product_option_value;
LOAD DATA INFILE '/var/lib/mysql-files/out.csv'
       INTO TABLE oc_product_import 
       FIELDS TERMINATED BY ','
       OPTIONALLY ENCLOSED BY '"'
       (sku, quantity);
UPDATE oc_product_option_value AS R 
INNER JOIN oc_product_import AS P 
       ON R.product_option_value_id = P.product_option_value_id 

SET R.quantity = P.sku; 
DROP TABLE product_import;"

Редактировать: моя проблема в том, что штрих-код хранится только в product_option_newvalue и может быть привязан только к количеству путем ссылки на product_option_value_id в обеих таблицах. Чтобы обновить количество в таблице product_option_value.

EDIT2: это аналогичный код, который работает для меня. Но он не должен ссылаться на проблему PRODUCT_OPTION_VALUE_ID, с которой я работаю в двух таблицах, так как штрих-код включен в таблицу продуктов, а не в дополнительную таблицу по ссылке

DROP TABLE IF EXISTS oc_product_import; 
CREATE TABLE oc_product_import LIKE oc_product
LOAD DATA INFILE '/var/lib/mysql-files/out.csv'
INTO TABLE oc_product_import 
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY ';'
(sku, quantity);
UPDATE oc_product AS R 
INNER JOIN oc_product_import AS P 
ON R.sku = P.sku 
SET R.quantity = P.quantity; 
DROP TABLE oc_product_import;"

1 Ответ

1 голос
/ 22 марта 2019

Я бы порекомендовал использовать MySQL Workbench . Это не самое лучшее, но оно определенно облегчает управление такими ситуациями.

После того, как вы настроите его, вы можете щелкнуть правой кнопкой мыши по таблице и выбрать table data import wizard и вручную добавить файл CSV.

Если вы обнаружите какие-либо ошибки, сообщите мне.

Кроме того, если вы работаете на Mac, вы можете просто brew cask install mysqlworkbench в терминале.

...