sql查询连接多个表

时间:2015-11-30 21:40:50

标签: sql

我希望从People和地址获取所有列,其中CategoryId等于类别。

有这个查询。

SELECT   
    Category.Id, People.*, Adress.* 
FROM     
    Category 
JOIN 
    People ON People.CategoryId = Category.CategoryId 
JOIN     
    Adress ON Adress.PeopleId = People.Id  
WHERE    
    Category.CategoryId = @category 
ORDER BY 
    People.PeopleId DESC ;

运行应用程序时出现错误。

  应用程序中的服务器错误。

     

无效的列名称“Id”。列名称“Id”无效。

     

描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:System.Data.SqlClient.SqlException:无效列   名字'Id'。列名称“Id”无效。

     

源错误:第153行:da.SelectCommand = command;线   154:DataTable dt = new DataTable();第155行:
  da.Fill(DT);第156行:cn.Close();第157行:
  PagedDataSource pgitems = new PagedDataSource();

为什么它不起作用?一些帮助?

使用visual studio本地数据库。

3 个答案:

答案 0 :(得分:1)

错误是因为您的表“类别”没有列名“Id”。看起来您需要将其更改为“CategoryId”。

您的人员表也可能存在类似的问题(没有“Id”列)。

答案 1 :(得分:0)

错误似乎在Category.Id上,请验证此大写是否正确。我认为这类似于“Category.id”或“Category.CategoryId”

答案 2 :(得分:0)

将ID更改为相应的CategoryId和PeopleId

SELECT   Category.CategoryId , People.*, Adress.* 
FROM     Category JOIN People ON People.CategoryId=Category.CategoryId 
JOIN     Adress ON Adress.PeopleId=People.PeopleId
WHERE    Category.CategoryId=@category 
ORDER BY People.PeopleId DESC ;