我有这些桌子:BRANCH
(Bno,街道,地区,城市,邮政编码,电话号码,传真号码)STAFF
(Sno,Fname,Lname,Address,Tel_No,Position,Sex,DOB,Salary,NIN,Bno)PROPERTY_FOR_RENT
(Pno、街道、区域、城市、Pcode、类型、房间、租金、Ono、Sno、Bno)
将创建一个视图BranchStats
(Bno, 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/