Не получается вставить несколько строк из одной таблицы в другую - MySQL

Узнай цену своей работы

Формулировка задачи:

Добрый день. Нужно вставить в таблицу

oc_product_to_category

в столбцы

category_id

,

main_category

,

product_id

значения

category_id = 137

(постоянное),

main_category = 0

(постоянное),

product_id

= мы выбираем из таблицы

oc_product_option_value

где

option_value_id = 118

Т.е. category_id и main_category - всегда одинаковые, а product_id - уникальный номер, который меняется в каждой строке. [IMG=http://modamio.ru/asd.PNG][/IMG] Я пытался сделать это таким образом:
INSERT INTO `oc_product_to_category` (`category_id`, `main_category`, `product_id`)
(SELECT  137 AS category_id, 0 AS main_category, `product_id` FROM `oc_product_option_value` WHERE `option_value_id` = '118');
либо
INSERT INTO `oc_product_to_category` (`product_id`, `category_id`, `main_category`) VALUES ((SELECT `product_id` FROM `oc_product_option_value` WHERE `option_value_id` = '118'), '137', '0');
Но мускуль ссылается на ошибку

#1062 - Duplicate entry '2175-137' for key 'PRIMARY'

Т.е. такие числовые значения в колонке

product_id

уже присутствуют. Подскажите пожалуйста, как обойти данную ошибку? Заранее благодарен!

Решение задачи: «Не получается вставить несколько строк из одной таблицы в другую»

textual
Листинг программы
USE `modamio2`;
INSERT INTO oc_product_to_category 
SELECT category_table.product_id, 137, 0 FROM oc_product_to_category category_table INNER JOIN oc_product_option_value option_table ON category_table.product_id = option_table.product_id WHERE category_table.category_id = 67 AND option_table.option_value_id = 127

Объяснение кода листинга программы

  1. USE modamio2; — Подключение к базе данных modamio2
  2. INSERT INTO oc_product_to_category — Команда вставки данных в таблицу oc_product_to_category
  3. SELECT category_table.product_id, 137, 0 FROM oc_product_to_category category_table — Выборка данных из таблицы oc_product_to_category
  4. INNER JOIN oc_product_option_value option_table ON category_table.product_id = option_table.product_id — Соединение таблиц oc_product_to_category и oc_product_option_value по полю product_id
  5. WHERE category_table.category_id = 67 AND option_table.option_value_id = 127 - Фильтрация данных по полям category_id и option_value_id
  6. END; — Конец запроса

Оцени полезность:

14   голосов , оценка 3.643 из 5
Похожие ответы