生成独特的配对——“夹具” ——来自表格
我有一个表:
ID | NAME | CLASS
------------------
1 | Aaa | 1
2 | Bbb | 1
3 | Ccc | 1
4 | Ddd | 1
等等...
我需要按类 id 将它们随机组合在一起(在示例中我按名称组合它们),但在某种组中,结果应该是这样的:
表 2
ID | Home | Away | Class | Group
----------------------------------
1 | Aaa | Bbb | 1 | 1
2 | Ccc | Ddd | 1 | 1
3 | Bbb | Ccc | 1 | 2
4 | Ddd | Aaa | 1 | 2
5 | Aaa | Ccc | 1 | 3
6 | Bbb | Ddd | 1 | 3
可以看出,没有组包含两次相同的记录。
类似于体育锦标赛中的比赛装置,如果这能让我的问题更容易理解的话。
我需要 MySQL 行或 PHP 函数,无论哪种效果更好。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我继续在 MySQL 中将其编码为挑战/练习。
给定表:
和:
和数据:
然后此过程:
第一次调用:
生成此表:
I went ahead and coded this in MySQL as a challenge/exercise.
Given the tables:
And:
And the data:
Then this procedure:
Called the first time with:
Generates this table:
您的第二个表应仅指定关联(邻接矩阵):
C_ID
是“连接 ID”。完成后,您可以使用MySQL的JOIN。
要生成
Home
和Away
列的所有组合,您需要这样的算法:http://labix.org/snippets/permutations#head-132e017244f864c098296f85de0f112916e82001。在您提供的示例中,K=2 且 N=4。Your second table should only specify associations (an adjacency matrix):
C_ID
being the "connection ID".After you've got that, you can use MySQL's JOIN.
To generate all the combinations of the
Home
andAway
columns you need an algorithm like this: http://labix.org/snippets/permutations#head-132e017244f864c098296f85de0f112916e82001. In the example you've provided, K=2 and N=4.