我有这些表格:
BRANCH
(Bno,Street,Area,City,Pcode,Tel_No,Fax_No)STAFF
(Sno,Fname,Lname,Address,Tel_No,Position,Sex,DOB,Salary,NIN,Bno)PROPERTY_FOR_RENT
(Pno,Street,Area,City,Pcode,Type,Rooms,Rent,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服务器版本,以便使用正确的语法 靠近'独特的staff.Bno)NumStaff,Count(Distinct property_for_rent.Sno)Num'在第4行
我的SQL语句有什么问题吗?需要帮助
答案 0 :(得分:3)
MySQL(默认情况下)不允许在函数名和开始表之间留一个空格。所以,尝试删除这些空格:
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;
中对此进行了解释
[。 。 。]解析器使用以下规则 默认情况下,区分他们的名字是否被用作 函数调用或非表达式上下文中的标识符:
要在表达式中将名称用作函数调用,名称和后面的“(”括号之间必须没有空格 字符。
相反,要使用函数名作为标识符,不能立即使用括号。
要求函数调用没有空格 名称和括号之间仅适用于内置函数 有特殊考虑的功能。
COUNT
就是这样一个名字。