日期:2014-05-18  浏览次数:20463 次

请大家帮忙看看SQL语句错哪了(Order by)?谢谢!
OleDbCommand   DBCommand.CommandText   =
    "SELECT   Leavewords.*,Replies.Body   AS   ReplyBody   FROM   "   +
                "(Leavewords   LEFT   JOIN   ReplyLeaveword   ON   Leavewords.LeavewordID   =   ReplyLeaveword.LeavewordID)   "
+   "LEFT   JOIN   Replies   ON   Replies.ReplyID   =   ReplyLeaveword.ReplyID   "
+   "ORDER   BY   Leavewords.CreateTime   DESC "

说明:
Leavewords是数据库中的留言表,包含ID(int),内容(Text),创建时间(Date)。
Replies是数据库中的回复表,包含ID(int),内容(Text),创建时间(Data)。
ReplyLeaveword是数据库中的映射表,只有两个字段,表示每个留言ID对应的回复ID,以 "| "分隔。

SELECT语句的前半部分是将三个数据表合并成一个,经检测没有问题,可以运行。但是一旦加上了后面的ORDER   BY以后就提示出错了,以下是asp.net提供的出错页面信息:

============================
“/”应用程序中的服务器错误。
--------------------------------------------

至少一个参数没有被指定值。  
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.Data.OleDb.OleDbException:   至少一个参数没有被指定值。
============================

请大家帮忙,谢谢!




------解决方案--------------------
中断代码,把SQL语句调试出来后,直接在查询分析器中执行。

------解决方案--------------------
--try
OleDbCommand DBCommand.CommandText =
"SELECT Leavewords.*,Replies.Body AS ReplyBody FROM " +
"Leavewords LEFT JOIN ReplyLeaveword ON Leavewords.LeavewordID = ReplyLeaveword.LeavewordID "
+ "LEFT JOIN Replies ON Replies.ReplyID = ReplyLeaveword.ReplyID "
+ "ORDER BY Leavewords.CreateTime DESC "