SqlDataSource中的SQL Join查询

本文关键字:查询 Join SQL 中的 SqlDataSource | 更新日期: 2023-09-27 18:07:56

我真的不确定如何做到这一点。

在表Product1中,我有:

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

在另一个表Componets中我有:

Id, Code, Description, Unit, Cost, Note

我面临的问题是,虽然表Components总是所有列都有数据,表Product1应该从表"Components"中获取相关的"Description, Unit and Cost"数据。在本表"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表中得到Code, Group, QuantityNote

SqlDataSource中的SQL Join查询

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

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

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

首先,让我们来理解为什么它们是"模棱两可的"。

因为您的连接在两个具有相同列名的表上。由于没有为这些列指定表名,因此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如何被用作别名。它们不会给你造成任何"歧义"。

希望这有帮助!!