因此,我目前正在使用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还是很陌生,而这超出了我的知识范围。谢谢!
最佳答案
SELECT typeid,name,max(waste),greatest(0,sum(quantity)) quantity FROM ( ....