Пришлось столкнуться с такой задачей. В таблице перечислены модели часов марки CASIO.

И в конце, что типично для русского рынка, добавлены ER, DEF, UER и прочая.

Пришлось поработать с SQL запросами, чтобы оставить только полезные названия у моделей часов.

Данный запрос делает выборку по последней букве каждого значения и обобщает с помощью GROUP BY общее число каждой из таких последних букв:

SELECT SUBSTRING(`name_ru-RU`,LENGTH(`name_ru-RU`),1) as one_var,
        count(`name_ru-RU`) as cnt
FROM `q3j5c_jshopping_products`
where `product_manufacturer_id`=1
group by one_var

Здесь я выбираю уже список моделей и идентификаторов товара по каждой конкретной последней букве:


SELECT p.`product_id`, `name_ru-RU`
FROM `q3j5c_jshopping_products` as p,
      `q3j5c_jshopping_products_to_categories` as pc
WHERE p.`product_id`=pc.`product_id`
and p.`product_manufacturer_id`=1
and pc.`category_id` <> 30
and SUBSTRING(p.`name_ru-RU`,LENGTH(p.`name_ru-RU`),1) ='R'

А в этом запросе я удаляю, например DR в конце каждой модели:


UPDATE `q3j5c_jshopping_products` as p,
      `q3j5c_jshopping_products_to_categories` as pc
set p.`name_ru-RU`=SUBSTRING(p.`name_ru-RU`,1,LENGTH(p.`name_ru-RU`)-2),
     p.`name_en-GB` = SUBSTRING(p.`name_en-GB`,1,LENGTH(p.`name_en-GB`)-2),
      p.`name_sl-SI` = SUBSTRING(p.`name_sl-SI`,1,LENGTH(p.`name_sl-SI`)-2)
WHERE p.`product_id`=pc.`product_id`
   and p.`product_manufacturer_id`=1
    and pc.`category_id` <> 30
     and SUBSTRING(p.`name_ru-RU`,LENGTH(p.`name_ru-RU`)-1,2) ='DR'

Add comment


Security code
Refresh