我收到此错误:
多部分标识符" dbo.Users.Id"无法受约束。
我的查询:
Select
dbo.Users.Name,
SUM(dbo.IncomeCategories.YearEstimation - dbo.ExpensCategories.YearBudget)
From
Users, IncomeCategories
inner join
dbo.ExpensCategories on dbo.Users.Id = dbo.ExpensCategories.Id
where
Users.Id = 1
你能帮我解决一下吗?
答案 0 :(得分:1)
您需要更改表格的顺序; JOIN
的优先级高于逗号,因此当编译器解析JOIN
子句时,它尚未解析出Users
表引用。您可以通过将Users
表直接放在JOIN之前来解决这个问题:
Select Users.Name,SUM(IncomeCategories.YearEstimation-ExpensCategories.YearBudget)
From IncomeCategories, Users
inner join ExpensCategories
on
Users.Id=ExpensCategories.Id
where Users.Id=1
其他(潜在)问题:
在表格引用中保持一致。您在某些地方使用dbo.
而在其他地方使用dbo.
;要么在任何地方使用它(如果你需要使用IncomeCategories
),要么在任何地方(如果你没有)。
您没有定义与GROUP BY Users.Name
表的关系,因此您将获得一个笛卡尔积(可能是您想要的,但它不清楚)。
你有没有GROUP BY的SUM,所以除非你添加Users.Id
,否则你会收到错误。
将ExpensCategories.Id
加入ExpensCategories.UserId
似乎很奇怪。我期待{{1}}或其他什么