我有这些桌子:
BRANCH(Bno,街道,地区,城市,邮政编码,电话号码,传真号码)
STAFF(Sno,Fname,Lname,Address,Tel_No,Position,Sex,DOB,Salary,NIN,Bno)
PROPERTY_FOR_RENT(Pno、街道、区域、城市、Pcode、类型、房间、租金、Ono、Sno、Bno)
将创建一个视图BranchStatsBno, NumStaff, NumProps),该视图指示任何分支机构雇用的员工数量和属性句柄数量。

CREATE VIEW BranchStats
AS
   SELECT
       branch.Bno Bno,
       Count (Distinct Staff.Bno) NumStaff,
       Count (Distinct property_for_rent.Sno) NumProps
   FROM
       branch
   JOIN
       Staff ON Staff.Bno = branch.Bno
   JOIN
       property_for_rent ON property_for_rent.Sno = Staff.Sno
   GROUP BY
       branch.Bno

错误
SQL语法中有错误;请查看手册
对应于MySQL服务器版本,以便使用正确的语法
接近“Distinct staff.Bno)NumStaff,Count(Distinct
物业租金。Sno)Num'在第4行
我的SQL语句有错吗?需要帮助

最佳答案

MySQL(默认情况下)不允许函数名和开头的paren之间有空格。因此,尝试删除这些空间:

CREATE VIEW BranchStats AS
   SELECT branch.Bno,
          Count(Distinct Staff.Bno) as NumStaff,
          Count(Distinct property_for_rent.Sno) as NumProps
   FROM branch JOIN
        Staff
        ON Staff.Bno = branch.Bno JOIN
        property_for_rent
        ON property_for_rent.Sno = Staff.Sno
   GROUP BY  branch.Bno;

这在documentation中有解释:
[ . ..]解析器使用以下规则
默认情况下,用于区分其名称是否用作
函数调用或作为非表达式上下文中的标识符:
要将名称用作表达式中的函数调用,名称和下列“(”括号)之间不能有空格
性格。
相反,要将函数名用作标识符,不能紧跟在其后的括号中。
要求函数调用不使用空格
在名称和括号之间,仅适用于内置
有特殊考虑的功能。COUNT就是这样一个名字。

关于mysql - 关于SQL View,我有些困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27081961/

10-10 06:55