【发布时间】:2014-03-29 21:14:07
【问题描述】:
我知道在使用 Access(或一般的 OleDb)时,以正确的顺序提供参数很重要,即使您命名它们也是如此,因为无论名称如何,它们总是按它们的顺序拾取。
但是在这个查询中:
SELECT Comments.ID, Users.Nom, CommentsHelpfulness.Helpful
FROM (Comments INNER JOIN Users
ON Comments.UserID = Users.ID)
LEFT JOIN CommentsHelpfulness
ON (CommentsHelpfulness.CommentID = Comments.ID
AND (CommentsHelpfulness.UserID = [enter userid]))
WHERE (Comments.GameID = [enter gameid])
为什么 Access 在提示我输入用户 ID 之前提示我输入游戏 ID?原来在我的asp.net网站中使用这个,我还必须先添加gameid。
实际上是如何确定顺序的,我必须在其中添加参数?我以为它只是从左到右。 (我不想知道如何更改顺序,我真的只是对它是如何确定的感兴趣)
【问题讨论】:
-
如果您将 userid 的参数移动到 WHERE,您会从左到右,但这里的情况好坏参半。控制顺序,看这篇文章:blogannath.blogspot.com/2010/02/…(搜索字符串'一般来说,顺序在')
-
控制顺序是有帮助的,但是如果你不人为地改变它,我还是想知道是什么决定了顺序。您的链接显示“提示用户输入查询参数的顺序与查询中从头到尾遇到参数的顺序相同”,但此处并非如此。 WHERE 中的参数是否总是在 JOIN 条件中的参数之前?还是跟括号有关系?
-
我不知道有关订单的事实,但知道它可以根据是否使用子查询而改变(在 main 之前询问 subs);因此似乎有道理,它会在加入之前提示输入“Where”参数。