任何一位Mysql专家知道如何在1个查询中处理自定义组计算场景吗?
我希望我的解释能有道理。我能够创建查询,但是我的查询仅适用于与容器相关的项目,并且仅当没有多个项目相关时才有效。我真的希望任何人都能帮上忙 考虑以下对象:任何一位Mysql专家知道如何在1个查询中处理自定义组计算场景吗?,sql,mysql,Sql,Mysql,我希望我的解释能有道理。我能够创建查询,但是我的查询仅适用于与容器相关的项目,并且仅当没有多个项目相关时才有效。我真的希望任何人都能帮上忙 考虑以下对象: 容器 人 项目 我有一个表,其中存储了所有对象的实例。该表使用自引用父子结构,因此从技术上讲,可以将容器“放在人的内部”(仅提及,这种情况不会发生) 对象\u实例 目标 父ID 类型ID typespecification(与containerid、personid或itemid相同=>三者中的一个已填充) 集装箱 拟人 项目ID
- 容器
- 人
- 项目
容器
“放在人
的内部”(仅提及,这种情况不会发生)
- 对象\u实例
- 目标
- 父ID
- 类型ID
- typespecification(与containerid、personid或itemid相同=>三者中的一个已填充)
- 集装箱
- 拟人
- 项目ID
- 集装箱(人)
- 集装箱
- 拟人
- 数量
- 必需(布尔值)
- 集装箱项目
- 集装箱
- 项目ID
- 数量
- 必需(布尔值)
- 如果没有与容器相关的容器\人员/容器\项目=>result=1
- 如果有相关记录,应按以下方式考虑:
- 如果容器未包含(具有子记录)所有必需的相关人员/项目=>结果0
- 否则:
- 结果=基于以下条件的平均值:
- (#子记录与容器中的金额关系)
- 如果有超过1个人或物品与集装箱相关,则(#记录vs金额)值的“重量”应为该集装箱的相关集装箱金额值之间的比率
在进行复杂连接和分组时,我通常不得不求助于这种类型的查询:
- 创建分组(或唯一)列表
- 在新查询中,获取分组列表,然后加入一个未分组列表,该列表提供所需的其他详细信息
SELECT
Container.name,
Item.name,
(ifnull(Sum(Object_Instance.amount),0) / Container_Item.amount) as value
FROM
Container
Inner Join Object_Instances as Containers
ON Containers.typeid = 'container'
AND Container.containerid = Containers.typespecification
Left Outer Join Container_Item ON Container_Item.containerid = Container.containerid
Left Outer Join Item ON Item.itemid = Container_Item.itemid
Left Outer Join Object_Instance as ContainerItems
ON Item.itemid = ContainerItems.typespecification
AND ContainerItems.typeid = 'item'
AND ContainerItems.parentid = Containers.objectid
WHERE Containers.objectid = 1
GROUP BY
Container.name,
Container_Item.amount,
Item.name,
Container.containerid