2011-05-13 58 views
0

选择数据时嗨
我有一个Web服务连接到具有其中有一些数据的表称为客户机一个分贝。
我有另一个Web服务连接到另一个数据库,有一个名为clientdetails其中有一些其他数据的表。
我必须返回一个分页的客户端列表,并且每个客户端对象都包含这两个表中的信息。
但我有一个问题。
必须在两个表上应用搜索条件。
所以在客户表基本上我可以有属性:
cprop1,cprop2
在clientdetails表,我可以有cdprop1,cdprop2
和我的搜索条件可以cporp1 =东西,cdprop2 = somethingelse分页结果从2个数据库

我所说的第一个Web服务,并把它的标准cporp1 =东西
并返回一些信息,然后我调用该方法在第二Web服务,但如果我要回到说,10个项目在页面上和第二的准则Web服务应用于第一个Web服务选择的10个项目(cdprop2 = somethingelse),那么我可能会留下8个项目或没有任何项目湖
那么在这种情况下我该怎么做?
我如何确保始终获得正确数量的项目(就像用户在页面上所说的那样)?

回答

0

我发现在像这样的实例中,最好不要使用身份主键,而是在第二个数据库(在第一个数据库中生成)中生成值的主键。
至于搜索,您应该从第一个数据库中搜索符合您的条件的前1000个项目,并将它们与匹配第二个数据库中给定条件的前1000个项目相交,并从此交集中返回所需数量的项目。
您的查询不应该以任何方式返回无限量的项目,因此1000应该这样做。当然,这个数字可能会更大或更小。

0

直到你有两种反应,你不知道你要多少记录有显示。

你不用什么样的数据库访问,你意味着你要求“N记录匹配标准X”,其中N设置为10.在某些数据库访问机制中,你可以要求所有匹配记录然后在该集合中推进“游标”,因此您不需要设置任何上限 - 我们假设数据库负责为这样的查询有效地管理资源。

如果你不能做到这一点,那么你需要能够重温第一个数据库,要求在接下来的10条记录,重复,直到最后你有一整页或没有更多的记录,都可以找到。这要求你有一些方法来为“下一个10”指定一个查询。

您需要能够以某种有效的方式获得与条件匹配的所有记录,无论是通过您的数据库提供的某种光标机制,还是通过您自己的“分页”查询,没有这种能力,我没有办法保证给出准确的结果。