真希望有人能帮我这个忙!我有6张桌子:
产品
朴素
设备
朴素
设备类
设备级
设备类
分类
Equipfunctions
装备
分类
设备
装备
Workshopequipment
工作狂
装备
products -一些产品的列表
设备-一些设备的列表
Prodequipment -列出产品所需的设备。您可以使用设备中列出的设备,也可以用设备中的设备替换它。表产品与表设备有一对多的关系,即您将使用许多不同的工具(设备)来生产一种产品,但是您可以选择在这对设备/设备中使用任何人。例如,你可以用木框或塑料框架(一副)和盖板玻璃或盖板塑料(第二副)来给一张照片加框。你可以随意组合,但这两对都应该使用:木制框架与盖板玻璃或塑料框架与盖板玻璃或木制框架与塑料盖或塑料框架与塑料盖子。
Equipfunctions和Equipclasses --因为一件设备可以以不同的方式使用,它不直接与表设备相连。我创建了表Equipclasses,其中列出了每种可能的设备的所有单一用途,以及表Equipfunction,其中我列出了每种设备的单一用途。
Workshopequipment -列出他们正在使用的车间和设备。
现在,我需要一个产品清单,这些产品可以由两个不同的给定车间生产(假设workshop=1和workshop= 4),也就是说,这两个车间都有生产这些产品所需的所有设备。请记住,这些工作跳并不需要像我前面描述的那样使用相同的设备。
我正在尝试这个查询:
SELECT prodid FROM Products JOIN (
SELECT workshopid, prodlist, equipclassmain, equipclassor,
if( LOCATE( equipclassmain, prodlist ) >0
AND LOCATE( equipclassor, prodlist ) >0, 1, 0 ) AS pairstatus FROM Prodequipment JOIN
(
SELECT classid FROM Equipclasses JOIN (
SELECT classid FROM Equipfunctions JOIN (
SELECT workshopid, GROUP_CONCAT( equipid ) AS prodlist FROM Workshopequipment
GROUP BY workshopid
)
equipfunclist GROUP BY equipid
) equipclasslist GROUP BY classid
) WorkshopequipmentList HAVING pairstatus = 1 AND workshopid in (1, 4)
) prodbyworkshops ON classid = equipclassmain OR classid = equipclassor但我得到一个“列分类在字段列表是模棱两可的”。知道这是怎么回事吗?
谢谢!
发布于 2009-12-13 01:48:28
查询引用具有classid列的多个表。
因此,当您在HAVING子句中引用HAVING时,它不知道要为哪个表获取classid。
您需要编写tablename.classid,其中tablename是包含classid列的表的名称。(可能是equipclasslist;我没有查看查询)
发布于 2009-12-13 01:51:32
它来自查询的部分:
...
SELECT classid
FROM Equipclasses JOIN (
SELECT classid
FROM Equipfunctions...EquipClasses和内部查询都有一个classId。您需要指定要选择的是哪一个。
https://stackoverflow.com/questions/1895315
复制相似问题