[Помогите] Правильный запрос в mysql

Тема в разделе "OpenCart", создана пользователем Rusik, 16 фев 2016.

  1. Rusik

    Rusik

    Регистрация:
    21 янв 2013
    Сообщения:
    162
    Симпатии:
    51
    Хочу перенести часть данных столбец category_id из таблицы product_to_category в таблицу product. Допустим в стоблец test_id, но сталкиваюсь с тем что идет auto_increment либо duplicate_key =/
    То есть создаются "новые" товары из-за auto_increment product_id или просто нету возможности обновить инфу.

    Пробовал уже 20 разных вариаций на тему:

    Instert/
    UPDATE `база`.`product` (`test_id`)
    SELECT `category_id`
    FROM `база`.`product_to_category`
    WHERE `category_id` = '75'
    и
    'product'.'product_id'='product_to_category'.'product_id'

    Подскажите пожалуйcта как правильно составить запрос =)
     
    Последнее редактирование: 16 фев 2016
  2. alex_storm

    alex_storm дизайн, CSS Команда форума

    Регистрация:
    11 дек 2012
    Сообщения:
    1.120
    Симпатии:
    559
    Какое конкретно поле нужно обновить ?

    У Вас в запросе не хватает выборки двух баз.

    UPDATE DB_PREFIX_product SET p.price = p.price*0.2 WHERE p.id=(
    SELECT p.id, p.price, c.id FROM DB_PREFIX_product AS p, DB_PREFIX_product_to_category AS pc WHERE pс='75'
    )

    Примерно так
     
    Последнее редактирование: 16 фев 2016
  3. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.041
    Симпатии:
    774
    Код:
    UPDATE product p SET p.test_id = (SELECT ptc.category_id FROM product_to_category ptc WHERE ptc.product_id = p.product_id LIMIT 1) AS category_id WHERE category_id = 75
    
    Префиксы не добавлял, как и кавычки.

    Следует не забывать, что товар может быть в нескольких категориях. Здесь будет выбрана только первая попавшаяся из них.
    И вы уверены, что вам нужно фильтровать именно по категории?
     
    Rusik и Baco нравится это.
  4. Rusik

    Rusik

    Регистрация:
    21 янв 2013
    Сообщения:
    162
    Симпатии:
    51
    Спасибо, наверное в 4 утра стоит спать, с утра быстро понял в чем косяк)
    update oc2_product, oc2_product_to_category
    set oc2_product.new_id = '75'
    where oc2_product.product_id = oc2_product_to_category.product_id and oc2_product_to_category.category_id = '75'