因此,我目前正在使用 EVE 静态数据库导出,并且在尝试报告程序其余部分所需的值列表时遇到了障碍。我目前正在尝试使用以下方法获取蓝图所需的 typeID、名称、废物和数量:
SELECT typeid,name,waste,greatest(0,sum(quantity)) quantity FROM (
SELECT invTypes.typeid typeid,invTypes.typeName name,null AS waste,quantity
FROM invTypes,invTypeMaterials
WHERE invTypeMaterials.materialTypeID=invTypes.typeID
and invTypeMaterials.TypeID=@paramID
UNION
SELECT invTypes.typeid typeid,invTypes.typeName name,invBlueprintTypes.wasteFactor
waste, invTypeMaterials.quantity*r.quantity*-1 quantity
FROM invTypes,invTypeMaterials,ramTypeRequirements r,invBlueprintTypes
WHERE invTypeMaterials.materialTypeID=invTypes.typeID
and invTypeMaterials.TypeID =r.requiredTypeID
and r.typeID = invBlueprintTypes.blueprintTypeID and r.activityID = 1
and invBlueprintTypes.productTypeID=@paramID and r.recycle=1
) t GROUP BY typeid,name
现在,这个 SQL 改编自之前的一组没有返回浪费值的代码。wasteFactor 存储在数据库的 invBlueprintTypes 表中。每当我运行我的程序并使用此函数时(我有一组单独的代码将值加载到 C# List 数组中,目前只是忽略获取“名称”值),浪费总是作为空值返回。我假设这是因为我在做“空 AS 浪费”,但我不知道如何在没有这个的情况下合并两个 SELECT 函数,因为第一个 SELECT 最初只选择了 3 个值。如果有人知道我应该如何调整我的代码,我将不胜感激,因为我对 SQL 相当陌生,这有点超出我的知识范围。谢谢!