Master2KAZ

[Решено] Как вставить в таблицу все записи кроме тех, что есть?

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

Master2KAZ    0
INSERT INTO `oc_product_to_opbcm`(`product_id`, `price`, `koeff`) VALUES SELECT p.`product_id`, p.`price`, 1.45 FROM `oc_product` p LEFT JOIN `oc_product_to_opbcm` p2o ON p.`product_id`=p2o.`product_id` WHERE (p2o.`koeff` IS NULL);

Чего хочу: в таблице oc_product_to_opbcm уже есть определенные товары, хочу добавить туда все товары, кроме тех, что уже есть в таблице.

 

Вопрос: что делаю не так?

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


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

Можно так 

INSERT INTO `oc_product_to_opbcm`(`product_id`, `price`, `koeff`) 
VALUES (SELECT p.`product_id`, p.`price`, 1.45 FROM `oc_product` p WHERE p.`product_id` NOT IN (SELECT `product_id` FROM `oc_product_to_opbcm`))

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


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

Replace разве не заменяет?? Мне не надо чтобы заменяло, а просто добавило те, что нет. Или я чего-то еще не знаю?

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


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

 

Можно так 

INSERT INTO `oc_product_to_opbcm`(`product_id`, `price`, `koeff`) 
VALUES (SELECT p.`product_id`, p.`price`, 1.45 FROM `oc_product` p WHERE p.`product_id` NOT IN (SELECT `product_id` FROM `oc_product_to_opbcm`))

А если товаров около 7 тыс, тормозить не будет?

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


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

 

Можно так 

INSERT INTO `oc_product_to_opbcm`(`product_id`, `price`, `koeff`) 
VALUES (SELECT p.`product_id`, p.`price`, 1.45 FROM `oc_product` p WHERE p.`product_id` NOT IN (SELECT `product_id` FROM `oc_product_to_opbcm`))
Ошибка

SQL запрос: dot.gif

 

INSERT INTO `oc_product_to_opbcm`(`product_id`, `price`, `koeff`)

VALUES (SELECT p.`product_id`, p.`price`, 1.45 FROM `oc_product` p WHERE p.`product_id` NOT IN (SELECT `product_id` FROM `oc_product_to_opbcm`))

 

Ответ MySQL: dot.gif

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT p.`product_id`, p.`price`, 1.45 FROM `oc_product` p WHERE p.`product_id` ' at line 2 

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


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

values убрать.

просто insert .... select ....

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


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

Точно. Сработало, всем спасибо.

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


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

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

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

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

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

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

Войти

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

Войти


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

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