gpt4 book ai didi

c# - 如今“形状 - 追加”查询等效性

转载 作者:行者123 更新时间:2023-11-30 18:27:55 24 4
gpt4 key购买 nike

过去几周,我一直在将一个用 VB 编写的程序转换为 C#。在某些地方,我注意到以一种奇怪的方式编写的查询,出现了“Shape”和“Append”这两个词。例如:

SHAPE {SELECT Test, IdQuestion, QuestionName, QuestionTimeLimit, ImageLocation 
FROM dbo.userViewConTestQues
WHERE (Test = 5) ORDER BY QuestionOrder} AS ParentCMD APPEND ({SELECT Answer,
IdAnswer, Question FROM dbo.userAnswers } AS ChildCMD RELATE IdQuestion TO Question) AS ChildCMD

我完全确定该查询的等效项是 INNER JOIN,类似于:

SELECT A.Test, A.IdQuestion, A.QuestionName, A.QuestionTimeLimit, A.ImageLocation,
B.Answer, B.IdAnswer FROM dbo.userViewConTestQues A INNER JOIN
dbo.userAnswers B ON A.IdQuestion=B.Question WHERE A.Test=5 ORDER BY A.QuestionOrder

调试后得到如下结果:旧程序的记录数是 60,这意味着 60 行,而运行我编写的新查询时得到了 400 多行,所以我想我错了。现在的“形状 - 追加”等价物是什么?

编辑:60 行只属于父记录集,但是 child 的记录集数是 6,但我不知道如何获取它们。

最佳答案

如果我没记错的话,SHAPE APPEND 关联父子数据,结果是您实际上为每个父行获得一个子记录集。使用结果时,您必须检查该记录集并适本地处理它(如果网格不支持它)。

当你说 60 行时,你是否可能只计算父记录集?

即使子记录集中没有行,它也会为您提供父记录集中的记录,因此它更像是 LEFT OUTER JOIN 但实际上并没有直接的 SQL 等价物这将为您提供 SHAPE APPEND 所做的分层结果。

如果您想继续使用 SHAPE APPEND,OleDbConnection 和 OleDbDataAdapter 仍然支持该语法,但您必须将 Provider=MSDataShape 添加到您的连接字符串。然后在获取行时,您将在父级 DataRow 上使用 GetChildRows() 来获取子行。

关于c# - 如今“形状 - 追加”查询等效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25957377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com