我已经为这个问题寻找了几个小时的解决方案,但什么也没有,所以我在这里。
我有一个数据集与4个数据表:
DS
+Parent
++Child1
++Child2
++Child3
我在数据集上定义了使用pk链接父节点到子节点的关系。
问题是当我填充(使用数据适配器)。填充方法)子表,数据库返回所有记录,而不仅仅是与父表相关的记录,所以我的数据表比他们需要的大,需要一段时间来加载,因为这是一个移动设备的代码,这是一个溢价。
我不能像在父数据上那样在子数据上使用WHERE过滤器,因为这取决于父数据。
在填充子表时是否有办法只返回与父表相关的记录?
我一定是看这里的东西,因为我认为这将是简单的东西?!?
谢谢。
EDIT:在构建SELECT命令时,唯一已知的ID是父表的单一公共标识符。这对于过滤子表是不好的,因为这些数据不存在于子表中,只有父表的PK是未知的。
如果您只知道父表id,这还不足以确定子表中需要哪些记录,也许您可以尝试封装业务逻辑的嵌套选择:
SELECT *
FROM child1 c
WHERE c.myforeignkey in
(
select p.myforeignkey
from parent p
where p.parentid = ...
)
在LEFT JOIN上?
SELECT c.*
FROM child1 c
LEFT JOIN parent p on c.commonid = p.commonid
WHERE p.parentid = ...
您已经说过您使用parent PK = child fk链接到子表,因此您将在子表中有一个parentid列。填充父表的查询格式为SELECT * FROM parent WHERE parentid = @parentid,填充子表的查询格式为SELECT * FROM child1 WHERE parentid = @parentid