我的数据库中存储了许多贷方。我应该说只有少量的贷方,所以我可以轻松地缓存数据,而不必进行查找。
但是,当客户申请贷款时,我希望每次都按照逻辑顺序对不同的贷方进行首次查询。例如:
贷款人A. 贷款人B. 贷方C
第一位客户再次查看贷方A,第二客户B,第三客户C,第四客户A.
这背后的原因仅仅是在贷方之间平均分配线索,如果计数器每天重置一次,那就不会是世界末日。
显然,我可以将这些信息写入数据库 - 但这有点过分吗?其他人需要实现类似的东西,并提出一个更简单的解决方案吗?
任何建议表示赞赏。
答案 0 :(得分:3)
由于这一切都存储在数据库中,您可以添加一个列,将其命名为 LastUsed ,您可以在其中存储日期/时间,然后您的查询将只是获取最早的日期,应该返回给您下一个要使用的行,所以你的数据看起来像这样
通过制作您的查询以选择最早的日期,您将获得D,并且一旦使用您使用今天的日期更新,那么接下来将是E,依此类推
答案 1 :(得分:2)
为了确保后续作业不是随机完成的,并按照逻辑顺序完成,您确定您需要将之前的受让人存储在某处。
基本上我要做的是在数据库中有一个名为“AssignedTo”的列,对于每个赋值,我会检查该列,然后将新的引导分配给下一个逻辑受让人。
答案 2 :(得分:1)
这太过分了。
我不知道你的情况(将使用程序的地方,数据库的位置等等。) 您应该使用xml文件来存储此信息。我会说你给他们一天的客户数量,然后总是拿一个最优先的客户。
<Lenders>
<LenderA Clients = "5", Priority = "1"> Jim </LenderA>
<LenderB Clients = "4", Priority = "2"> Jim </LenderA>
<LenderC Clients = "4", Priority = "3"> Jim </LenderA>
</Lenders>
在这种情况下,程序知道他不能选择
如果您在我推荐之前从未使用过XML,那么请阅读XmlDocument以了解如何声明文档,并XPath来检索所需的节点。
答案 3 :(得分:1)
我会保留一份已使用的贷方清单,然后根据第一个清单筛选所有贷方,这样您就只能获得尚未登陆的贷方。当所有贷方的清单等于使用的贷方时,清除它并重新开始。您可以轻松地在linq中执行此操作:Where(x => !UsedLenders.Contains(x))
答案 4 :(得分:1)
如果您存储了一个包含DateTime最后一个贷方的额外列,您可以修改贷方选择查询以返回最长时间之前选择的贷方。即,类似于:Lenders.OrderBy(x => x.LastSelected).First()
当然,当选择贷方时,您还必须回写数据库。除非你在一个SQL查询中完成了所有这些操作。这样的东西有效(编辑:刚验证 - 效果很好):
UPDATE MyTable
SET LastSelected = GetDate()
OUTPUT INSERTED.*
WHERE Id = (SELECT TOP (1) Id FROM MyTable ORDER BY LastSelected)
答案 5 :(得分:1)
如果有任何记录插入数据库供客户访问,则选择该记录的ID,并使零基索引等于ID mod N的贷方,其中N是贷方的数量。
此方法有时用于简单的广告旋转器。由于ID值按顺序递增并独立地形成数据中的所有其他更改,因此您可以保证所有贷方将被均匀访问,并且客户将以严格的循环顺序发送给贷方。
异常是指稍后回滚某个ID值作为事务的一部分,但这个简单的解决方案假设回滚次数通常接近于零。