我有一个mySQL表,可容纳n张图片。获取2张图片的最独特的组合
+------------+--------------+
| picture_id | picture_name |
+------------+--------------+
| 1 | ben.jpg |
| 2 | nick.jpg |
| 3 | mark.jpg |
| 4 | james.jpg |
| .. | ... |
| n | abraham.jpg |
+------------+--------------+
为Web应用程序,我需要同时显示2张图片,用户可以在投票一个画面或另一个。投票后,用户得到一组新的两张照片。
(申请使用的界面)
+---------------------+--------------------+
| Vorte for picture 1 | Vote for picture 2 |
+---------------------+--------------------+
我想避免尽可能显示相同的组合。我可以创建一个辅助表,它将保存所有可能的组合。
+----------------+--------------+--------------+
| combination_id | picture_id_1 | Picture_id_2 |
+----------------+--------------+--------------+
| 1 | 1 | 2 |
| 2 | 1 | 3 |
| 3 | 1 | 4 |
| 4 | 1 | 5 |
| .. | .. | .. |
| (n^2-n)/2 | .. | .. |
+----------------+--------------+--------------+
但对于100张的图片,这将是(100^2 - 100)/ 2 = 4950(编辑)的行,和与每一个附加图象表将成倍增长。 (这在今天的计算中不是一个大问题,我想)
但是,我如何以用户总是看到尽可能少的重复的方式查询此表。
预期结果:
run 1: picture_id's = 4,5 (any numbers between 1 and n)
run 2: picture_id's = 2,7
run 3: picture_id's = 5 and 20
...
你是怎么从450? “每增加一张照片”是什么意思?你打算也做3套,4套等?你的桌子如何处理这种随意的变化? – David
你在哪里存储用户结果?只需自己加入ID为1的ID小于2的ID,这样你就可以得到A xQbert
@David想一想乘法表。数字从1到10,乘以从1到10的每个数字。有10^2个可能的结果,一半是重复的。 10是自身的乘法。 随着每一次添加的图片,我的意思是在数据库中的图片总数。我总是计划最多显示2张图片 –