powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Умная группировка с автоподбором признака группы
3 сообщений из 3, страница 1 из 1
Умная группировка с автоподбором признака группы
    #39164773
diego8807
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время_суток.
Столкнулся с задачей, которая не помещается в ум. Может кто сталкивался с таким?
Итак, задача:

Есть таблица товаров
products
product_id101102103104105---199

Есть таблица свойств товара
properties
product_id property(varchar)101 prop1101 prop2101 prop3......101prop99......102 prop11102 prop12102 prop13......102 prop199......103 prop4104 prop2105 prop12106 prop1106 prop3107 prop13108 prop11108 prop13......150 prop1150 prop11......199propXXX

нужно получить таблицу группировки похожих товаров (по цветам) - похожие товары помечаются одинаковым цветом (цвет произвольный)
result
product_id color_id101 1102 2103 1104 1105 2......150 0......199 xx
Признаки похожести товара:
Товар считается похожим, если есть хотя бы одно одинаковое свойство с другим товаром.

Если товар имеет свойства из разных цветовых групп, то группа эта не верная и аннулируется. и товар включается в цветовую группу "0" (пример товар №150)

Задается максимальное количество групп числом (например 10), если групп реально больше, то остальные в группу "0"

Изначальное количество групп для списка товаров неизвестно и вычисляется из конкретного списка товаров и списка свойств.

Если товары не группируются, то у них всего одна цветовая группа "0"

Если товары группируются не все, то те товары, которые невозможно отнести к какой-то группе входят в группу "0".


Зачем это нужно?

когда большой список товара, невозможно понять, какой товар похож на другой, а какой совсем из другого "теста", поэтому нужно помечать похожие товары одним цветом, а другие похожие товары - другим цветом. Если похожих товаров нет, то и они все помечаются цветом "0".

PS:
Сломал голову, не могу придумать алгоритм, и следовательно и не могу придумать запрос. Помогите.
...
Рейтинг: 0 / 0
Умная группировка с автоподбором признака группы
    #39164788
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Умная группировка с автоподбором признака группы
    #39164820
diego8807
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил задачу так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SELECT  
 main
,min(bro)
,count(bro) 

FROM (

SELECT DISTINCT
 main.product_id as main
,sec.product_id as bro
FROM properties as main 
INNER JOIN properties as sec
ON main.property=sec.property 

WHERE main.product_id IN ('4195958553','676878092','613386056','536374329','1805217661','934480936','3426704264') 
AND sec.product_id IN ('4195958553','676878092','613386056','536374329','1805217661','934480936','3426704264') 
) aaa

GROUP BY main
ORDER BY count(bro) DESC


bro - это номер группы, которая потом нумеруется по порядку и получаем то, что нужно.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Умная группировка с автоподбором признака группы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]