そのため、私は現在 EVE Static Database Export を使用しており、プログラムの残りの部分に必要な値のリストを報告しようとしたときに問題が発生しました。現在、以下を使用して、設計図に必要な 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 配列にロードする別のコード セットがあり、現在は "name" 値の取得を無視するだけです)、廃棄物は常に null 値として返されます。これは、「null AS Waste」を行っているためだと思いますが、最初の SELECT にはもともと 3 つの値しか選択されていなかったため、これを使用せずに 2 つの SELECT 関数をマージする方法についてはわかりません。私はSQLにかなり慣れていないため、コードをどのように調整する必要があるかについて誰かが考えを持っていれば、非常に感謝しています。これは私の知識の範囲を少し超えています。ありがとう!