Закрытая тема
Показано с 1 по 3 из 3

Тема: Запрос — заменить или вставить

  1. #1
    Модератор Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Аватар для Den1xxx
    Регистрация
    24.05.2011
    Адрес
    Гомель
    Сообщений
    2,501
    Thanks
    125
    Thanked 214 Times in 205 Posts
    Записей в дневнике
    9

    Запрос — заменить или вставить

    Здравствуйте.
    Чего-то не соображу, помогите пожалуйста.
    При парсинге из 1С заношу товары во временную таблицу, выбирая определённый склад.
    Структура временной таблицы
    CREATE TABLE `import_items` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Номер записи',
    `item_id` varchar(11) NOT NULL COMMENT 'Ид товара сайта',
    `item_id_1c` varchar(255) NOT NULL COMMENT 'Ид товара 1С',
    `cat_id_1c` varchar(255) NOT NULL COMMENT 'Ид категории 1С',
    `name` varchar(255) NOT NULL COMMENT 'Имя объекта',
    `price` varchar(25) DEFAULT NULL COMMENT 'Цена оптовая',
    `price1` varchar(25) DEFAULT NULL COMMENT 'Цена 1 дилера',
    `price2` varchar(25) DEFAULT NULL COMMENT 'Цена 2 дилера',
    `price3` varchar(25) DEFAULT NULL COMMENT 'Цена 3 дилера',
    `price4` varchar(25) DEFAULT NULL COMMENT 'Цена 4 дилера',
    `avail_1c` varchar(255) NOT NULL COMMENT 'Статус',
    `quantity` varchar(25) NOT NULL COMMENT 'Количество',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=1215 DEFAULT CHARSET=utf8 COMMENT='Объекты для записи каталога из 1С'

    Всё ок. Код отрабатывает, данные вставляются.

    Теперь из временной таблицы нужно перенести в склады.
    Структура таблицы складов

    CREATE TABLE `store` (
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Номер записи',
    `item_id` varchar(11) NOT NULL COMMENT 'Ид товара сайта',
    `name` varchar(255) NOT NULL COMMENT 'Имя объекта',
    `store` int(5) NOT NULL COMMENT 'Номер склада',
    `code_1c` varchar(255) DEFAULT NULL,
    `price` varchar(255) DEFAULT NULL COMMENT 'Цена',
    `price1` varchar(255) DEFAULT NULL COMMENT 'Цена 1',
    `price2` varchar(255) DEFAULT NULL COMMENT 'Цена 2',
    `price3` varchar(255) DEFAULT NULL COMMENT 'Цена 3',
    `price4` varchar(255) DEFAULT NULL COMMENT 'Цена 4',
    `quantity` float DEFAULT NULL COMMENT 'Количество',
    `date` datetime NOT NULL COMMENT 'Время изменения',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Склад'

    При вставке в `store` мы одним запросом хотим вставить всё напарсенное из временной таблицы, т.е. например поле store=1
    Как сделать запрос: если в таблице `store` уже есть значение поля store=1 и item_id совпадает с временной таблицей, то обновить значения, иначе — вставить новое?

    Немного сумбуно написал. Иными словами, для примера.
    Если в таблице store имеется строка с item_id=1237 и store=1, то UPDATE, если нет — INSERT.

    Чего-то торможу, голову сломал уже.
    Помогите, пожалуйста. Готов заплатить за помощь.
    Последний раз редактировалось Den1xxx; 29.12.2016 в 15:49.

  2. #2
    Местный Degradator скоро придёт к известности Аватар для Degradator
    Регистрация
    02.07.2012
    Сообщений
    2,056
    Thanks
    141
    Thanked 153 Times in 153 Posts
    Точно не уверен, но кажется вот так

    INSERT INTO table (id,item, price) VALUES (1,"boots", 10),(2, "pants", 20) ON DUPLICATE KEY UPDATE item=VALUES(item), price=VALUES(price)

    с селектом должно также сработать

  3. The Following User Says Thank You to Degradator For This Useful Post:

    Den1xxx (01.04.2018)

  4. #3
    Модератор Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Den1xxx - просто великолепная личность Аватар для Den1xxx
    Регистрация
    24.05.2011
    Адрес
    Гомель
    Сообщений
    2,501
    Thanks
    125
    Thanked 214 Times in 205 Posts
    Записей в дневнике
    9
    Вопрос закрыт, перепроектировал базу.

Закрытая тема

Похожие темы

  1. Как заменить код
    от pashek123 в разделе HTML
    Ответов: 2
    Последнее сообщение: 30.03.2015, 18:07
  2. Заменить маркер
    от Lavr в разделе HTML
    Ответов: 2
    Последнее сообщение: 18.10.2010, 10:45
  3. жно ли вставить if в sql-запрос?
    от sergey-g в разделе PHP
    Ответов: 6
    Последнее сообщение: 18.06.2010, 21:47
  4. Что может заменить PHP?
    от Andrfas в разделе HTML
    Ответов: 3
    Последнее сообщение: 14.06.2010, 20:25
  5. как заменить css на свой?
    от qwertik в разделе CSS
    Ответов: 18
    Последнее сообщение: 20.05.2008, 15:27

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения