在 SQL 任何地方都找不到相关名称
correlation name not found on SQL Anywhere
我有两个 table,分别是 Employees 和 Salarygroup。 PersonalID是Employees的主键,SalaryID是Salarygroup的主键。在 Employees table 中,还有一行名为 StartDat,它具有日期数据类型并跟踪员工开始在公司工作的日期。另外,AmountInEuros是员工每个月拿到的工资,它的数据类型是数字
我需要创建一个函数来计算员工到目前为止从公司收到的总金额,但是当我输入 PersonalID 时,我收到一条错误消息,显示 *Correlation name 'Salarygroup'没有找到。
有人可以帮我理解为什么会这样吗?
ALTER FUNCTION "dba"."countTotalAmountOfMoney"(@PersonalID int)
RETURNS int
AS
BEGIN
DECLARE @totalAmountOfMoney int;
SELECT @totalAmountOfMoney = g.AmountInEuros * DATEDIFF(month, g.StartDat,
'2019-01-16')
FROM dba.Employees
Inner Join dba.Salarygroup s
ON dba.Employees.SalaryId = dba.Salarygroup.SalaryId
RETURN @totalAmountOfMoney;
END
也许您忘记使用您创建的别名 's' 引用第二个 table:
ALTER FUNCTION "dba"."countTotalAmountOfMoney"(@PersonalID int)
RETURNS int
AS
BEGIN
DECLARE @totalAmountOfMoney int;
SELECT @totalAmountOfMoney = g.AmountInEuros * DATEDIFF(month, g.StartDat,
'2019-01-16')
FROM dba.Employees
Inner Join dba.Salarygroup s
ON dba.Employees.SalaryId = s.SalaryId
RETURN @totalAmountOfMoney;
END
您已经为 table 指定了一个别名,因此您需要使用它。我建议为所有 tables:
使用别名
DECLARE @totalAmountOfMoney int;
SELECT @totalAmountOfMoney = s.AmountInEuros * DATEDIFF(month, e.StartDat, '2019-01-16')
FROM dba.Employees e INNER JOIN
dba.Salarygroup s
ON e.SalaryId = s.SalaryId
WHERE e.personalID = @PersonalID;
请注意,g
别名未在您的查询中定义。 StartDat
来自 Employees
,所以我将其更改为 e
。我猜 AmountInEuros
来自 s
.
我有两个 table,分别是 Employees 和 Salarygroup。 PersonalID是Employees的主键,SalaryID是Salarygroup的主键。在 Employees table 中,还有一行名为 StartDat,它具有日期数据类型并跟踪员工开始在公司工作的日期。另外,AmountInEuros是员工每个月拿到的工资,它的数据类型是数字
我需要创建一个函数来计算员工到目前为止从公司收到的总金额,但是当我输入 PersonalID 时,我收到一条错误消息,显示 *Correlation name 'Salarygroup'没有找到。
有人可以帮我理解为什么会这样吗?
ALTER FUNCTION "dba"."countTotalAmountOfMoney"(@PersonalID int)
RETURNS int
AS
BEGIN
DECLARE @totalAmountOfMoney int;
SELECT @totalAmountOfMoney = g.AmountInEuros * DATEDIFF(month, g.StartDat,
'2019-01-16')
FROM dba.Employees
Inner Join dba.Salarygroup s
ON dba.Employees.SalaryId = dba.Salarygroup.SalaryId
RETURN @totalAmountOfMoney;
END
也许您忘记使用您创建的别名 's' 引用第二个 table:
ALTER FUNCTION "dba"."countTotalAmountOfMoney"(@PersonalID int)
RETURNS int
AS
BEGIN
DECLARE @totalAmountOfMoney int;
SELECT @totalAmountOfMoney = g.AmountInEuros * DATEDIFF(month, g.StartDat,
'2019-01-16')
FROM dba.Employees
Inner Join dba.Salarygroup s
ON dba.Employees.SalaryId = s.SalaryId
RETURN @totalAmountOfMoney;
END
您已经为 table 指定了一个别名,因此您需要使用它。我建议为所有 tables:
使用别名DECLARE @totalAmountOfMoney int;
SELECT @totalAmountOfMoney = s.AmountInEuros * DATEDIFF(month, e.StartDat, '2019-01-16')
FROM dba.Employees e INNER JOIN
dba.Salarygroup s
ON e.SalaryId = s.SalaryId
WHERE e.personalID = @PersonalID;
请注意,g
别名未在您的查询中定义。 StartDat
来自 Employees
,所以我将其更改为 e
。我猜 AmountInEuros
来自 s
.