適切な用語を使用していない場合は、お詫び申し上げます。
とにかく、私は2つのテーブルを持っています。1 つは ID と値を持つ項目テーブルです。2 つ目は、アイテム テーブルと修飾子へのリンクを含む mod テーブルです。特定のアイテムに対して複数の修飾子が存在する場合があります。item.value が 100 で、2 つの修飾子がその項目にリンクされている場合 (mod.modifier 値が 1.25 と 1.1 の場合)、135 (100 *(1.25+) ではなく 137.5 (100 *1.25 *1.1) の値を取得したいと考えています。 1.1))。
これは私がこれまでに書いたテストコードです:
DROP TABLE IF EXISTS item;
DROP TABLE IF EXISTS mod;
CREATE TABLE item (
item_id INTEGER PRIMARY KEY,
value DECIMAL
);
CREATE TABLE mod (
mod_id INTEGER PRIMARY KEY,
item_id INTEGER,
modifier DECIMAL
);
INSERT INTO item (item_id, value)
VALUES (0, 100);
INSERT INTO item (item_id, value)
VALUES (1, 10);
INSERT INTO item (item_id, value)
VALUES (2, 1000);
INSERT INTO mod (mod_id, item_id, modifier)
VALUES (0, 0, 0.25);
INSERT INTO mod (mod_id, item_id, modifier)
VALUES (1, 0, 0.10);
INSERT INTO mod (mod_id, item_id, modifier)
VALUES (2, 2, 0.10);
INSERT INTO mod (mod_id, item_id, modifier)
VALUES (3, 2, 0.05);
INSERT INTO mod (mod_id, item_id, modifier)
VALUES (4, 2, 0.15);
SELECT item.item_id ID, item.value Value, mod.modifier Mod
FROM item
LEFT JOIN mod
ON item.item_id = mod.item_id;
次のような結果が得られることを願っています。
item.item_id item.value Result
0 100 137.5
1 10 10
2 1000 1328.25