C# 分析SQL Server Compact中的查询时出错
我使用WebMatrix运行我的查询,我认为它是正确的,但是我得到了一个错误 我的质询如下:C# 分析SQL Server Compact中的查询时出错,c#,sql,sql-server,stored-procedures,sql-server-ce,C#,Sql,Sql Server,Stored Procedures,Sql Server Ce,我使用WebMatrix运行我的查询,我认为它是正确的,但是我得到了一个错误 我的质询如下: var result = db.Query( @"SELECT e.event_id, e.title, e.description, e.event_start, e.event_end, e.group_id, e.recurring FROM event e JOIN Membership
var result = db.Query(
@"SELECT e.event_id, e.title, e.description, e.event_start, e.event_end, e.group_id, e.recurring
FROM event e
JOIN Membership m ON m.GroupID = e.group_id
WHERE e.recurring = 0
AND m.UserID = @0
AND e.event_start >= @1
AND e.event_end <= @2
UNION ALL
SELECT e.event_id, e.title, e.description, DATEADD(week, w.weeks, e.event_start), DATEADD(week, w.weeks, e.event_end), e.group_id, e.recurring
FROM event e
JOIN Membership m ON m.GroupID = e.group_id
CROSS JOIN
( SELECT row_number() OVER (ORDER BY Object_ID) AS weeks
FROM SYS.OBJECTS
) AS w
WHERE e.recurring = 1
AND m.user_id = 4;
AND e.event_start >= @4
AND e.event_end <= @5", userID, start, end, userID, start, end
);
var result=db.Query(
@“选择e.event\u id、e.title、e.description、e.event\u start、e.event\u end、e.group\u id、e.Recurtive
来自事件e
在m.GroupID=e.group\u id上加入成员m
其中e.r=0
而m.UserID=@0
和e.event_start>=@1
e.event_end=@4
和e.event_end在FROM之后,您可以列出多个以逗号分隔的表,结果将是所有这些表的交叉连接
但不能在连接后使用逗号语法。相反,请写出交叉连接:
JOIN Membership m
ON m.GroupID = e.group_id
CROSS JOIN
(
SELECT row_number() OVER (ORDER BY Object_ID) AS weeks
FROM SYS.OBJECTS
) AS w
Sql Server CE 4.0似乎不支持行号和其他窗口函数:(Simon,您似乎遇到了很多情况,您希望在SQL Server Compact中使用SQL Server语法,但语法并非100%兼容。您是否考虑过在SQL Server 2012中使用Express或新的LocalDb?请先观看此演示,然后再回答:将Compact edition添加到标记中…我假设CE不支持行_编号
:(我有什么办法可以解决这个问题吗?您使用row_number来生成数字序列-可能您需要在静态表中生成它。这不是一个优雅的解决方案,但总比没有好。谢谢您的回答。我可以在我的服务器上运行此查询的最佳/最简单的方法是什么?目前它完全是m。)ade使用WebMatrix/SQL Server CE。我担心迁移所有内容和更改代码需要大量的工作!:(如果您要查找周数列表,请创建一个表并用数字1到53填充它,这样做应该可以吗?我现在已迁移到SQL Server,我收到了错误信息”>关键字“WHERE”附近的语法不正确。知道为什么会出现这种情况吗?我已更新了上面的代码以显示当前运行的内容。此处可能是分号:m.user_id=4;
SQL Server将分号解释为语句结尾。