我有以下一点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正在返回一个我似乎无法找到的语法错误。此外,当我创建此视图时,如何才能使其可见?
答案 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
符号看起来像一个参数 - 因此不允许使用。