获取以下错误:“SQL 80001”附近的语法不正确;“天然的”;
我对下面的代码有问题,我已经附上了我正在处理的两段代码以及我得到的错误。 代码如下:获取以下错误:“SQL 80001”附近的语法不正确;“天然的”;,sql,sql-server,tsql,Sql,Sql Server,Tsql,我对下面的代码有问题,我已经附上了我正在处理的两段代码以及我得到的错误。 代码如下: CREATE PROCEDURE Get_rentalandemployees AS BEGIN SELECT Rental_ID, Rental_Start_Date, Rental_End_Date, Rental_Type_Description, Employee_id, Employee_First_Name, Employee_
CREATE PROCEDURE Get_rentalandemployees
AS
BEGIN
SELECT
Rental_ID, Rental_Start_Date, Rental_End_Date,
Rental_Type_Description,
Employee_id, Employee_First_Name, Employee_Last_Name,
COUNT(VIN) AS Vehicle_count
FROM
Rentals R
INNER JOIN
Rental_Types RT ON R.Rental_Type = Rental_type_Id
INNER JOIN
Employees E ON E.Employee_id = R.Rental_Employee_Id
NATURAL JOIN
Rental_Vehicles RV
GROUP BY
Rental_ID
END;
这是我正在处理的第二件事:
CREATE PROCEDURE Rental_repair_cost
AS
BEGIN
SELECT
Rental_ID, Rental_Start_Date, Rental_End_Date,
SUM(ISNULL(Repair_cost, 0)) AS Total_repair_cost
FROM
Rentals R
NATURAL JOIN
Rental_vehicles
WHERE
Rental_Type_Description = 'Personal'
END;
以下是错误:
SQL 80001:“Natural”附近的语法不正确。杂项SQL.query5.SQL 10SQL 80001:“Natural”附近的语法不正确。杂项SQL.query7.SQL 7
幸运的是,SQL Server不支持
自然连接
。因此,您需要一个显式的ON
条件:
SELECT Rental_ID, Rental_Start_Date, Rental_End_Date,
SUM(COALESCE(Repair_cost,0)) as Total_repair_cost
FROM Rentals R JOIN
Rental_vehicles
ON R.Vehicle_ID = rv.Vehicle_ID -- guessing at the condition
WHERE Rental_Type_Description = 'Personal';
请注意,所谓的
natural join
s并不是“自然”的。特别是,它们只依赖于具有相同名称的列,并且不利用正确声明的外键关系。我建议您干脆忘记一些数据库支持它们。您在哪里听说过自然连接?这不是SQL Server的事情…我一直在获得有关Chegg的帮助,这就是他们帮助我的方式。SQL Server上不存在它…我如何修复它以使上述代码正常工作?只需使用常规连接?