0

2 つのテーブルがあり、1 つのテーブルには支払いサイクルが含まれ、もう 1 つのテーブルには毎年、毎月などに応じて支払う必要があるものが含まれています。

この方法でデータベースにクエリを実行しています:

SELECT
    L.UserID,
    U.Username,
    L.CostPerCycle,
    CT.CycleType,
    CASE L.CycleTypeID
        WHEN L.CycleTypeID = 1 THEN L.CostPerCycle * 12
        WHEN L.CycleTypeID = 2 THEN L.CostPerCycle * 3
        WHEN L.CycleTypeID = 3 THEN L.CostPerCycle * 2
        WHEN L.CycleTypeID = 4 THEN L.CostPerCycle
        WHEN L.CycleTypeID = 5 THEN L.CostPerCycle
    END AS AnnualCost
FROM
    Links L
    LEFT JOIN Users U ON L.UserID = U.UserID
    LEFT JOIN CycleTypes CT ON L.CycleTypeID = CT.CycleTypeID
WHERE
    L.CycleTypeID <> 6;

問題は、MySQL が乗算の結果ではなく NULL 値を返すことです。その理由は正確にはわかりません。

最初の条件のみが評価されていることに気付きましたが、他の条件で何が起こっているのかわかりません。

言い換えると:

を持つレコードがある場合CycleTypeID = 1、MySQL はCostPerCycle12 倍になります。ただし、CycleTypeID が最初の条件と異なる場合、MySQL は何かを実行しますが、残りの条件を基本的に「無視」するのは何なのかわかりません。

それが私を正しい方向に向けるのに十分な情報であることを願っています!

ありがとう!

4

1 に答える 1