创建视图时出现语法错误

时间:2011-12-06 05:41:14

标签: mysql view

我有以下一点MySQL代码

CREATE VIEW UserResults AS 
   SELECT E.No, E. Description
      , Count(R.RID WHERE $Username= R.Owner)
      , Count(R.RID WHERE $Username= R.Owner AND Status==’Active’ ) 
   FROM ETable AS E, RTABLE as R
   ORDER BY E.No)

但MySQL正在返回一个我似乎无法找到的语法错误。此外,当我创建此视图时,如何才能使其可见?

3 个答案:

答案 0 :(得分:0)

  • 你有一个额外的结束括号,应删除
  • 观看次数不应为ORDER BY
  • WHERE子句不应位于SELECT的中间,您需要使用CASE
  • 您将返回笛卡尔积而不是将您的桌子加在一起,这可能会提供比您想要/期望更多的结果。

R.RID语句的THEN块中的CASE可能需要1,并不完全确定您希望从那些COUNT获得的内容你最初的陈述。

我试图找出你想要做的事情,我认为就是这样:

CREATE VIEW UserResults AS
   SELECT E.No, E.Description
      , SUM(CASE 
               WHEN $Username = R.Owner THEN R.RID
               ELSE 0
            END) AS SumOfOwner
      , SUM(CASE
               WHEN $Username = R.Owner AND Status = 'Active' THEN R.RID
               ELSE 0
            END) AS SumOfOwnerAndActive
   FROM ETable AS E
   INNER JOIN RTABLE as R ON E.No = R.ENo
   GROUP BY E.No, E.Description

答案 1 :(得分:0)

您创建视图的子查询是错误的:

SELECT E.No, E. Description, Count(R.RID WHERE $Username= R.Owner), Count(R.RID WHERE $Username= R.Owner AND Status==’Active’ ) FROM ETable AS E, RTABLE as R ORDER BY E.No)

你不能在像伯爵那样的地方使用:

Count(R.RID WHERE $Username= R.Owner)

查看Documentation并再次检查语法。

并尝试将状态=='有效'替换为状态='有效'

一旦created the view,您就可以像桌子一样阅读选择关键字

答案 2 :(得分:0)

除了在其他答案中确定的其他问题外,您还需要在视图中指定列的名称:

CREATE VIEW UserResults(No, Description, UserCount, ActiveCount) AS ...

此外,在经典(标准)SQL中,您无法使用变量参数化视图; $Username符号看起来像一个参数 - 因此不允许使用。