В связи с собственной глупостью не могу составить запрос в базу.
Имеются две таблицы в бд приложения(apps) и технологии(technologies), связанные many-to-many между собой(таблица app_technologies с полями app_id и technology_id).
Требуется вывести два приложения с наибольшим количеством общих технологий
как-то так (синтаксис не проверял, но думаю идея будет понятна)
SELECT
f.app_id as app1
,s.app_id as app2
,count(*) as cnt
FROM app_technologies f
INNER JOIN app_technologies s ON s.technology_id = f.technology_id AND s.app_id <> f.app_id
GROUP BY f.app_id, s.app_id
ORDER BY cnt DESC
LIMIT 1
Андрей Мохов: А в таком случае запрос всё равно работать не будет. Посмотрите на случай, когда имеется две пары подходящих приложений - (A, C) и (B, D). В этом случае на выходе можем получить строки
A, C
B, D
C, A
D, B
и две строки сверху будут относиться к разным парам.