MySQL запрос для апдейта по условию из нескольких строк

Тема в разделе "Базы данных", создана пользователем Jarhead, 28 апр 2015.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Jarhead

    Jarhead

    Регистр.:
    17 июн 2011
    Сообщения:
    348
    Симпатии:
    113
    Есть таблица:
    Код:
    `id_image` int(10) unsigned NOT NULL,
    `id_product` int(10) unsigned NOT NULL,
    `cover` tinyint(1) unsigned NOT NULL,
    
    В которой указаны ID картинок для товаров.

    Примерно вот так:
    Код:
    id_product;id_image;cover
    200;1000;0
    200;1001;0
    200;1002;0
    201;1011;0
    201;1012;0
    201;1013;0
    
    Последний параметр отвечает за главную фотку товара, так получилось что после импорта не у всех товаров проставился последний параметр, в место него 0.

    Как на уровне запроса или запроса + php перебрать все товары и их картинки и проверить отмечена ли главная фотка товара и если нет то проставить 1 первой фотке?

    Чтобы было так:
    Код:
    id_product;id_image;cover
    200;1000;1
    200;1001;0
    200;1002;0
    201;1011;1
    201;1012;0
    201;1013;0
    
    UPD: Спасибо! Все супер
     
    Последнее редактирование модератором: 12 май 2015
  2. newminer

    newminer Создатель

    Регистр.:
    21 апр 2015
    Сообщения:
    13
    Симпатии:
    4
    Вот этот запрос, который может выдать все товары, у которых не установлен "ковер":
    PHP:
    select distinct id_product from ps_image
    where id_product not in 
    (select id_product from ps_image where cover<>0)
    На основании его можно уже в пхп обработать, и картинкам с мин номером установить "ковер"=1

    кстати, в запрос стоит также добавить мин. номер картики, чтобы потом не запрашивать его отдельно для каждого продукта:
    PHP:
    select id_productmin(id_imagefrom ps_image
    where id_product not in 
    (select id_product from ps_image where cover<>0)
    group by id_product
     
    Последнее редактирование модератором: 12 май 2015
    latteo и Jarhead нравится это.
Статус темы:
Закрыта.