Получить связанные продукты, которые имеют максимальное количество тегов - PullRequest
0 голосов
/ 17 мая 2019

Мне нужно получить сопутствующие товары, которые имеют максимально возможное количество тегов.
Например:
Prod1 имеет следующие теги: tag1, tag2, tag3
Prod2 имеет следующие теги: tag2, tag4, tag5
Prod3 имеет следующие теги: tag2, tag3, tag5
Prod4 имеет следующие теги: tag6, tag7, tag5

Таким образом, к Prod1 относятся следующие продукты:
1- Prod3, поскольку они совместно используются двумя тегами: tag2 и tag3,
2- Следующим связанным продуктом является Prod2, поскольку они совместно используются одним тегом: tag2

Моя схема БД выглядит следующим образом:

CREATE TABLE Videos (VideoID INT PRIMARY KEY,
                     VideoTitle VARCHAR(80));

CREATE TABLE Tags (TagID INT PRIMARY KEY,
                   TagText VARCHAR(20));

CREATE TABLE VideosTags (VideoID FOREIGN KEY REFERENCES Videos,
                         TagID FOREIGN KEY REFERENCES Tags,
                         PRIMARY KEY (VideoId, TagId));

1 Ответ

1 голос
/ 17 мая 2019

Если вы хотите, чтобы результаты говорили для VideoID = 1111, то:

select
  videoid, count(*) counter
from VideosTags
where 
  videoid <> 1111
  and
  tagid in (select tagid from VideosTags where videoid = 1111)
group by videoid
order by counter desc

Сначала будут отсортированы товары с наиболее распространенными тегами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...