2013-08-06 148 views
2

我有两个表:分配均匀行从表

**Users** 
UserID | UserName | Password 

**Task** 
TaskId | Hours | UserID (Empty as of now) 

我需要在任务分配表UserID给任务,让所有用户获得的甚至几个小时的任务。我在数据库中有大约5000个任务,并且Hours列值范围为1到30.

如何使用SQL Server查询或LINQ来完成?

+0

一天中有多少小时再次出现?!? :P – Pinch

+0

以及我认为完成任务的工作时间,而不是一天中的小时数 – Jonesopolis

+0

你的规则书在哪里? – Pinch

回答

2

这听起来像是分区问题(请参阅here),您尝试分配任务,因此每个用户的小时总数相同。

在某些情况下,问题很容易解决(例如,如果所有任务都是1小时)。在其他情况下,问题没有解决方案(例如,如果用户数多于任务数)。作为一个提示,当一个问题有如此极端的变化时,它可能无法通过使用SQL查询来解决。

当然,您可以代表表中的数据。而且,你可以在复杂逻辑的某个查询上使用游标,并调用这个SQL。

维基百科页面描述了几种不同的可能算法。祝你好运。