Есть два набора сотрудников: менеджеры и ворчание.
Для каждого менеджера есть таблица manager_meetings, которая содержит список встреч, на которых присутствовал каждый менеджер. Аналогичная таблица grunt_meetings содержит список встреч, на которых присутствовал каждый хрюканье.
Итак:
manager_meetings grunt_meetings
managerID meetingID gruntID meetingID
1 a 4 a
1 b 4 b
1 c 4 c
2 a 4 d
2 b 5 a
3 c 5 b
3 d 5 c
3 e 6 a
6 c
7 b
7 a
Владельцу это не нравится, когда менеджер и ворчание знают точно такую же информацию. У него болит голова. Он хочет идентифицировать эту ситуацию, поэтому он может понизить репутацию менеджера до ворчания или рекламировать менеджера, или взять их в гольф. Владелец любит играть в гольф.
Задача состоит в том, чтобы перечислить каждую комбинацию менеджера и хрюкать, где оба присутствовали на одних и тех же собраниях. Если менеджер посещал больше встречи, чем ворчание, не совпадало. Если хрюканье посещало больше встреч, чем менеджер, не было ни одного матча.
Ожидаемые результаты:
ManagerID GruntID
2 7
1 5
... потому что менеджер 2 и grunt 7 оба присутствовали (a, b), в то время как менеджер 1 и ворчать 5 присутствовали (a, b, c).
Я могу решить это неуклюже, путем подбора подмножества собраний в подзапросе в XML и сравнения каждого хрустящего XML-списка с каждым XML-менеджером. Но это ужасно, а также я должен объяснить владельцу, что такое XML. И мне не нравится играть в гольф.
Есть ли лучший способ сделать "WHERE {subset1} = {subset2}"
? Похоже, я пропустил какой-то умный вид.