如何解决此SQL查询错误?

时间:2014-12-08 21:30:50

标签: sql sql-server

我收到此错误:

  

多部分标识符" 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

你能帮我解决一下吗?

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}}或其他什么