因此,我目前正在使用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 (  ....

08-18 11:13