Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取以下错误:“SQL 80001”附近的语法不正确;“天然的”;_Sql_Sql Server_Tsql - Fatal编程技术网

获取以下错误:“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 10
SQL 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上不存在它…我如何修复它以使上述代码正常工作?只需使用常规连接?