gpt4 book ai didi

sql - 复杂的查询 - 需要帮助!

转载 作者:行者123 更新时间:2023-12-01 00:03:00 26 4
gpt4 key购买 nike

真的希望有人能帮我解决这个问题!我有 6 张 table :

产品
prodid

生产设备
prodid
equipclassmain
装备分类器

装备等级
分类号

设备功能
装备精良
分类号

设备
装备好

车间设备
车间编号
装备好

产品 – 一些产品的列表
设备——一些设备的列表
Prodequipment – 列出制作产品所需的设备。您可以使用 equipclassmain 中列出的设备,或者用 equipclassor 中的设备替换它。表产品与表 Prodequipment 具有一对多关系,即您将使用许多不同的工具(设备)来生产一个产品,但您可以选择使用 equipclassmain/equipclassor 对中的任何一个。例如,要为照片装框,您可以使用木框或塑料框(一对)和盖玻片或盖塑料(第二对)。您可以根据需要组合它,但应该使用两对:带盖玻片的木框或带盖玻片的塑料框或带塑料盖的木框或带塑料盖的塑料框。
EquipfunctionsEquipclasses – 因为一件设备可以以不同的方式使用,所以它没有直接链接到表 Prodequipment。我创建了表 Equipclasses,其中列出了所有可能设备的所有单一用途,并创建了表 Equipfunctions,其中我列出了每种设备的那些单一用途。
Workshopequipment – 列出他们正在使用的车间和设备。

现在我需要一个产品列表,这些产品可以由两个不同的给定车间(假设 workshopid = 1 和 workshopid = 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

但我得到一个“字段列表中的列 classid 不明确”。知道这里出了什么问题吗?

谢谢!

最佳答案

您的查询引用了多个具有 classid 列的表。
因此,当您在 HAVING 子句中引用 classid 时,它不知道要获取哪个表的 classid

您需要编写 tablename.classid,其中 tablename 是包含 classid 列的表的名称。 (大概是equipclasslist;我没看查询)

关于sql - 复杂的查询 - 需要帮助!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1895315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com