Поиск записей, которые чаще всего встречаются вместе в SQL - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть таблица ингредиентов:

ing_id, ing_name
1      , ing1
...

таблица рецептов:

rec_id, rec_name
1     , rec1
...

и таблица, показывающая связь между ними:

id, ing_id, rec_id
1,  1, 1
2,  1, 2
3,  2, 1
4,  3, 3
...

Как мне найти ингредиенты, которые чаще всего встречаются в одном рецепте?

1 Ответ

2 голосов
/ 16 апреля 2019

Вы можете использовать самостоятельное соединение и group by:

select c1.ing_id, c2.ing_id, count(*)
from connections c1 join
     connections c2
     on c1.rec_id = c2.rec_id and c1.ing_id < c2.ing_id
group by c1.ing_id, c2.ing_id
order by count(*) desc;

Если вы на самом деле хотите, чтобы имена вместо идентификаторов, вам понадобятся еще два объединения, чтобы ввести их.

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