在内部联接SQL语句中选择特定列

在内部联接SQL语句中选择特定列,sql,inner-join,Sql,Inner Join,我想从我拥有的最后一个内部联接的Products中选择一个特定列(Name)。我该怎么做 这是我的SQL语句: SqlCommand cmd = new SqlCommand("SELECT * FROM CustomerDetails cd INNER JOIN CustomerProducts cp ON cp.CustomerID = cd.Id INNER JOIN Products p ON cp.ProductID = p.ProductID", conn); 到目前为止,我得到了

我想从我拥有的最后一个内部联接的
Products
中选择一个特定列(
Name
)。我该怎么做

这是我的SQL语句:

SqlCommand cmd = new SqlCommand("SELECT * FROM CustomerDetails cd INNER JOIN CustomerProducts cp ON cp.CustomerID = cd.Id INNER JOIN Products p ON cp.ProductID = p.ProductID", conn);
到目前为止,我得到了这个,有可能有一个专栏吗?像
Name
有二氧化碳,工业氧气,因为它们在同一个Id中?多谢各位

编辑:我同意下面的评论,cd.*不建议,应该是cd.Id,cd.CustomerName。。。等等

这将使您将名称分组在一列中:

;WITH Customers AS
(
    select cd.Id, cd.customer ... FROM CustomerDetails cd 
)

SELECT stuff(
(
    select ', ' + p.[name] FROM Customers cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id Inner Join Products p ON cp.ProductID = p.ProductID
    FOR XML PATH('')
), 1, 2, '')
, c.Id, c.CustomerName ...
FROM Customers c

从客户详细信息中选择p.name…
可能
name
是保留字。请使用您正在使用的RDBMS更新您的问题,我们可以提供有关如何处理该问题的适当信息。在您的选择中,请使用您需要的表别名,如select p.columnnamethank you@bernie,但我仍然需要*on customer detailsOk,然后执行
select p.name,cd.*来自Customer Details…
我仍然需要来自Customer Details的列。虽然这样做有效,但它是一个SQL反模式。OP应该定义他想要的栏目。为我工作。最后一个问题,先生,请参阅更新,请尝试一下,先生,这是存储过程吗,先生?
SqlCommand cmd = new SqlCommand("select p.[name], cd.* FROM CustomerDetails cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id Inner Join Products p ON cp.ProductID = p.ProductID", conn);
;WITH Customers AS
(
    select cd.Id, cd.customer ... FROM CustomerDetails cd 
)

SELECT stuff(
(
    select ', ' + p.[name] FROM Customers cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id Inner Join Products p ON cp.ProductID = p.ProductID
    FOR XML PATH('')
), 1, 2, '')
, c.Id, c.CustomerName ...
FROM Customers c