Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回材质名称的SQL_Sql_Sql Server 2008_Tsql - Fatal编程技术网

返回材质名称的SQL

返回材质名称的SQL,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,下面的代码是我创建的一个查询的结果,除了一件事之外,所有代码都可以正常工作。我有物料名称的物料ID: 1 = bath 2 = sink 3 = toilet 下面显示的是每种材质的水槽 Select cu.FName + ' ' + cu.SName as 'Name', cu.Address1 + ', ' + cu.Address2 + ', ' + cu.Address3 as 'Dispatch Address', cu.PostCode, co.DateOrdered, c

下面的代码是我创建的一个查询的结果,除了一件事之外,所有代码都可以正常工作。我有物料名称的物料ID:

1 = bath
2 = sink
3 = toilet
下面显示的是每种材质的水槽

Select cu.FName + '  ' + cu.SName as 'Name', 
cu.Address1 + ', ' + cu.Address2 + ', ' + cu.Address3 as 'Dispatch Address', 
cu.PostCode, 
co.DateOrdered,
co.Material1,
ma.MaterialName,
co.material2, 
ma.MaterialName, 
ma.Price as 'Item Price' 
from Customers cu 
left join CustomerOrder co on co.CustomerID = cu.CustomerID
left join ItemOrder it on it.OrderID = co.OrderID 
left join Materials ma on ma.MaterialID = co.Material1 
or co.material2 = ma.MaterialItemID or co.material3 = ma.MaterialItemID
它显示如下(仅列出材料以避免混淆)


有人能帮忙吗?

有几种方法可以做到这一点,包括多次使用
材质表上的
JOIN
,以获得结果:

Select cu.FName + '  ' + cu.SName as 'Name', 
    cu.Address1 + ', ' + cu.Address2 + ', ' + cu.Address3 as 'Dispatch Address', 
    cu.PostCode, 
    co.DateOrdered,
    co.Material1,
    ma1.MaterialName Material1Name,
    co.material2, 
    ma2.MaterialName Material2Name, 
    ma1.Price as 'Item Price',
    co.material3, 
    ma3.MaterialName  Material3Name
from Customers cu 
left join CustomerOrder co 
    on co.CustomerID = cu.CustomerID
left join ItemOrder it 
    on it.OrderID = co.OrderID 
left join Materials ma1 
    on ma1.MaterialID = co.Material1 
left join Materials ma2 
    on co.material2 = ma2.MaterialItemID
left join Materials ma3 
    on co.material3 = ma3.MaterialItemID

还有一个问题,我如何总结材质Id的值?我可以创建一行,将3个价格相加,而不是将ma1.price作为“商品价格”吗?听起来您可以使用(ma1.price+ma2.price+ma3.price)来获取商品的总价。
Select cu.FName + '  ' + cu.SName as 'Name', 
    cu.Address1 + ', ' + cu.Address2 + ', ' + cu.Address3 as 'Dispatch Address', 
    cu.PostCode, 
    co.DateOrdered,
    co.Material1,
    ma1.MaterialName Material1Name,
    co.material2, 
    ma2.MaterialName Material2Name, 
    ma1.Price as 'Item Price',
    co.material3, 
    ma3.MaterialName  Material3Name
from Customers cu 
left join CustomerOrder co 
    on co.CustomerID = cu.CustomerID
left join ItemOrder it 
    on it.OrderID = co.OrderID 
left join Materials ma1 
    on ma1.MaterialID = co.Material1 
left join Materials ma2 
    on co.material2 = ma2.MaterialItemID
left join Materials ma3 
    on co.material3 = ma3.MaterialItemID