Желаемым результатом будет группировка первого набора по второму.Существует группа людей, которых нужно сопоставить с другими людьми, разделенными «комнатами», чтобы каждая комната использовалась одинаково.Таким образом, для 5 человек и 7 комнат существует 20 комбинаций, поэтому каждая комната будет использоваться не более 3 раз (касательная: каждая комната используется последовательно, поэтому нет опасности, что человек будет находиться в более чем одном месте одновременно).В группе 3 пары, но по мере добавления строк дополнительных групп число пар в группе должно уменьшаться;если удаляются строки дополнительных групп, то количество пар на группу должно увеличиваться.Если я не думал о множествах, это похоже на операцию RBAR, потому что я хочу, чтобы каждая комната использовалась как число комбинаций людей, поделенное на количество групп - 20 комбинаций / 7 групп = 3 комбинации на группу, но 20комбинации / 5 групп = 4 комбинации на группу.
В настоящее время набор результатов выглядит следующим образом:
person1 person2
person1 person3
person1 person4
person1 person5
person2 person1
person2 person3
person2 person4
person2 person5
person3 person1
person3 person2
person3 person4
person3 person5
person4 person1
person4 person2
person4 person3
person4 person5
person5 person1
person5 person2
person5 person3
person5 person4
Но я пытаюсь понять, как это выглядит так:
01-01 person1 person2
01-01 person1 person3
01-01 person1 person4
01-02 person1 person5
01-02 person2 person1
01-02 person2 person3
01-03 person2 person4
01-03 person2 person5
01-03 person3 person1
01-04 person3 person2
01-04 person3 person4
01-04 person3 person5
01-05 person4 person1
01-05 person4 person2
01-05 person4 person3
01-06 person4 person5
01-06 person5 person1
01-06 person5 person2
01-07 person5 person3
01-07 person5 person4
Вот T-SQL, который у меня есть:
If Object_Id('TempDb..#namez') Is Not Null
Drop Table #namez
Create Table #namez
(
namezId Int Not Null Primary Key,
membername VarChar(48)
)
Insert Into #namez
Values (10 ,'person1'), (11 , 'person2'),
(12 , 'person3'), (13 , 'person4'),
(14 , 'person5')
If Object_Id('TempDb..#groups') Is Not Null
Drop Table #groups
Create Table #groups
(
groupsId Int Not Null Primary Key,
GroupCode Char(5)
)
Insert Into #groups
Values (10, '01-01'), (11, '01-02'), (12, '01-03'),
(13, '01-04'), (14, '01-05'), (15, '01-06'), (16, '01-07')
Select
TeamOne.membername, TeamTwo.membername
From
#namez TeamOne
Full Outer Join
#namez TeamTwo On TeamOne.membername != TeamTwo.membername
order by
teamone.membername, teamtwo.membername
Спасибо!