SELECT SUM(t.OptLevel) + SUM(o.ReqLevel1) + SUM(b.nOptValue) FROM _Inventory AS i
LEFT JOIN _Items AS t ON t.ID64 = i.ItemID
LEFT JOIN _RefObjCommon AS o ON o.ID = t.RefItemID
LEFT OUTER JOIN _BindingOptionWithItem AS b ON b.nItemDBID = i.ItemID
WHERE i.CharID = 7843 AND i.Slot BETWEEN 0 AND 12 AND i.ItemID != 0
私はこのクエリに問題があります。私は結合の経験があまりありません。
t.OptLevel
常に >= 0 from_Items
であり、行は常にそこにあります
o.ReqLevel1
は常に 1 から 101 の間で_RefObjCommon
あり、行は常にそこにあります
ただし、b.nOptValue
from_BindingOptionWithItem
は、常に存在するとは限らない行からの NULL、1、または 2 です... b.nOptValue
12 行の結果 ( i.Slot BETWEEN 0 AND 12 ) のいずれかに = 1 または 2 が存在する場合、スクリプトは完全に実行されます。合計を取得しb.nOptValue
ますが、12 行すべての結果で NULL を返すと、クエリ全体で合計が NULL が返されます。
簡単な解決策があることは知っていますが、見つけることができません。