Sql server 多部分标识符1。”;ea.参数类型ID“;无法约束。2.多部分标识符“;ea.参数类型ID“;无法约束
刚刚完成评论中所说的 您已经在查询中定义了如下表别名Sql server 多部分标识符1。”;ea.参数类型ID“;无法约束。2.多部分标识符“;ea.参数类型ID“;无法约束,sql-server,Sql Server,刚刚完成评论中所说的 您已经在查询中定义了如下表别名 SELECT two.WorkOrderID, te.EquipmentID, tm.MaterialID, CodMaterial, MaterialName, EquipmentName, GoalPriceEnergyPerUnit, pt.ParameterTypeID FROM T_WorkOrders two LEF
SELECT two.WorkOrderID,
te.EquipmentID,
tm.MaterialID,
CodMaterial,
MaterialName,
EquipmentName,
GoalPriceEnergyPerUnit,
pt.ParameterTypeID
FROM T_WorkOrders two
LEFT OUTER JOIN T_Equipment te
ON te.EquipmentID = two.EquipmentID
LEFT OUTER JOIN T_Materials tm
ON tm.MaterialID = two.MaterialID
LEFT JOIN T_Parameter_Type pt
ON ea.ParameterTypeID = pt.ParameterTypeID
WHERE WorkOrderNumber = 2
AND tm.MaterialID = 417
AND te.EquipmentID = 1076
AND ea.ParameterTypeID = 4918
最后,您引用的列的别名不在上述任何一个列中
ea.ParameterTypeID
因此,请使用别名引用该表所属的列您没有连接表,因为您使用了错误的别名。试着看看你的桌子 T_设备 实现 T_工作订单 查看哪一个具有可以使用ParameterTypeID“连接”到的列。 我帮不了你更多,因为你没有提供足够的关于你的桌子和你真正想做什么的信息。但无论如何,这里有一个尝试
T_Equipment te
T_Materials tm
T_Parameter_Type pt
上面的代码是左连接的可能用法的示例,我正在连接不同的表。现在,正如您在注释中看到的,这将不起作用,因为代码有两个ON-s额外选项。我在这里要做的就是向你们展示你们可能错过的组合
此外,您在@TheGameiswar注释中给出的代码也不正确
SELECT two.WorkOrderID,
te.EquipmentID,
tm.MaterialID,
CodMaterial,
MaterialName,
EquipmentName,
GoalPriceEnergyPerUnit,
pt.ParameterTypeID
FROM T_WorkOrders two
LEFT JOIN T_Equipment te
ON te.EquipmentID = two.EquipmentID
LEFT JOIN T_Materials tm
ON tm.MaterialID = two.MaterialID
LEFT JOIN T_Parameter_Type pt
( -- this is not correct syntax
ON te.ParameterTypeID = pt.ParameterTypeID
ON tm.ParameterTypeID = pt.ParameterTypeID
ON two.ParameterTypeID = pt.ParameterTypeID
)
WHERE WorkOrderNumber = 2
AND tm.MaterialID = 417
AND te.EquipmentID = 1076
AND ea.ParameterTypeID = 4918
代码注释中所示的语句中缺少它。试着解决这个问题。另外,使用MicrosoftSQLServerManagementStudio还有助于编写SQL代码,因为它会在您丢失某些内容时发出警告。此外,我有时会使用视觉提示来确认我在做什么,通常这是从中发出的。您的查询引用了一个表别名
ea
,但您没有使用此别名的表。您希望得到什么样的结果?你想做什么?我试过了,但效果不太好。选择2.WorkOrderID,te.EquipmentID,tm.MaterialID,CodMaterial,MaterialName,EquipmentName,GoalPriceEnergyPerUnit,pt.ParameterTypeID来自T_工作订单两个左外连接T_设备te在te.EquipmentID=2.EquipmentID左外连接T_材料tm在tm.MaterialID=2.MaterialID左外连接T_参数类型pt左连接T_设备地址ea在ea上。ParameterTypeID=pt.ParameterTypeID,其中WorkOrderNumber=2,tm.MaterialID=417和te.EquipmentID=1076和pt.ParameterTypeID=4918您错了,因为表T_WorkOrders中没有名为ParameterTypeID的列,因此我无法比较IDIt重要的不是列的名称,而是主键和外键的关系。问题是您需要从T_参数_类型中获取什么数据,如果您确定需要从该表中获取什么数据,那么您应该具有标识每一行的键列,通常称为nameofclumnid(以ID结尾很重要)。之后,看看是否可以使用该ID列将该列与其他表连接起来。
SELECT two.WorkOrderID,
te.EquipmentID,
tm.MaterialID,
CodMaterial,
MaterialName,
EquipmentName,
GoalPriceEnergyPerUnit,
pt.ParameterTypeID
FROM T_WorkOrders two
LEFT JOIN T_Equipment te
ON te.EquipmentID = two.EquipmentID
LEFT JOIN T_Materials tm
ON tm.MaterialID = two.MaterialID
LEFT JOIN T_Parameter_Type pt
--ON is missing, maybe something like
-- pt.SomeID = two.SomeID
LEFT JOIN T_Equipment_Address ea
ON ea.ParameterTypeID=pt.ParameterTypeID
WHERE WorkOrderNumber=2
AND tm.MaterialID = 417
AND te.EquipmentID = 1076
AND pt.ParameterTypeID = 4918