【问题标题】:SQL Join query in SqlDataSourceSqlDataSource 中的 SQL Join 查询
【发布时间】:2014-06-10 19:32:04
【问题描述】:

我不太确定该怎么做。

Product1 的表中,我有:

Id, Code, Description, Group, Quantity, Unit, Cost, Note

在另一张桌子Componets 我有:

Id, Code, Description, Unit, Cost, Note

我面临的问题是,虽然表 Components 始终包含所有列数据,但表 Product1 应该从表“组件”中获取与“描述、单位和成本”相关的数据。在这个表中,“Product1”基本上只有Code、Quantity、Group和Note是用户自己添加的。

这可以通过在SqlDataSource 中进行的查询来实现吗?我不知道如何执行此操作,非常感谢您的帮助。

到目前为止,这是我尝试过的:

SELECT 
   Product1.Code, Group, Quantity, Product1.Note
FROM
   dbo.Product1
INNER JOIN 
   dbo.Components ON Components.Code = Product1.Code

但我没有得到我需要的东西,我只从Product1 表中得到CodeGroupQuantityNote

【问题讨论】:

  • 您需要给表格别名,或者在选择出现在两个表格中的列时完全指定表格名称。
  • 您最近对该问题的编辑完全改变了您原来的问题。
  • @NicholasV。是的,很抱歉你是对的,但与此同时我正在尝试做一些事情。
  • 查看我的更新答案...

标签: c# sql-server sqldatasource


【解决方案1】:

这意味着您的字段(列)代码和注释出现在两个表中;因此应该使用表前缀,它指出将从哪个表中获取列:

SELECT Components.Code AS 'Components Code', Product1.Code AS 'Product Code', Groupp, Quantity, Components.Note AS 'Components Node', Product1.Note AS 'Product Note'

FROM
dbo.Product1

INNER JOIN dbo.Components
ON Components.Code = Product1.Code

如上所示,可以包含多个列,并在获取时给它们一个标签。

【讨论】:

  • 同时我也更新了我的问题。但是这样我只得到了部分数据。
  • 这几乎可以满足我的需求。非常感谢您的帮助。我会尝试从这里解决我的需求。
【解决方案2】:

首先,让我们了解为什么它们“模棱两可”。

因为您的联接位于两个具有相同列名的表上。由于您没有为这些列指定表名,SQL 引擎很困惑您想要这些列来自哪个表?因此,它说的模棱两可。只需使用这样的别名:

GENERAL IDEA:

SELECT tab.id, tab.Name

FROM TableName tab

WHERE 选项卡称为别名。

关于你的问题,这是你需要的查询:

SELECT         prod.Code,
               prod.Groupp,
               prod.Quantity,
               prod.Note,
               comp.Description,
               comp.Unit,
               comp.Cost

FROM           dbo.Product1 prod    
INNER JOIN     dbo.Components comp
ON             comp.Code = prod.Code
//Any Where conditions should follow here

观察prodcomp 是如何用作别名的。它们不会给您带来任何“歧义”。

希望对你有帮助!!!

【讨论】:

  • 谢谢,我开始了解内容了。查询给了我错误。我在 Select 中的所有列都带有红色下划线
  • 您是否尝试过运行查询?有时,SQL Server 会为了好玩而给出“红线”。所以尝试运行查询:)
  • 是的,我又做了一次,现在只有这一行给出错误:com.Unit,无法将标识符关联到更多部分
  • 糟糕!!!我的错……那是拼写错误。它应该是 comp.Unit 而不是 com.Unit。编辑了我的答案。检查那个!猜猜这会工作!
  • 很高兴为您提供帮助! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
相关资源
最近更新 更多