私はphpとsqlが初めてで、後者についてもう少し学ぶために小さなゲームを構築しています。
これは、3 つのテーブルからなる単純なデータベースです。
-- *********** SIMPLE MONSTERS DATABASE
CREATE TABLE monsters (
monster_id VARCHAR(20),
haunt_spawn_point VARCHAR(5) NOT NULL,
monster_name VARCHAR(30) NOT NULL,
level_str VARCHAR(10) NOT NULL,
creation_date DATE NOT NULL,
CONSTRAINT monster_id_pk PRIMARY KEY (monster_id)
);
-- ****************************************
CREATE TABLE spawntypes (
spawn_point VARCHAR(5),
special_tresures VARCHAR (5) NOT NULL,
maximum_monsters NUMBER NOT NULL,
unitary_experience NUMBER NOT NULL,
CONSTRAINT spawn_point_pk PRIMARY KEY (spawn_point)
);
-- ****************************************
CREATE TABLE fights (
fight_id NUMBER,
my_monster_id VARCHAR(20),
foe_spawn_point VARCHAR(5),
foe_monster_id VARCHAR(20) NOT NULL,
fight_start TIMESTAMP NOT NULL,
fight_end TIMESTAMP NOT NULL,
total_experience NUMBER NOT NULL
loot_type NUMBER NOT NULL,
CONSTRAINT my_monster_id_fk FOREIGN KEY (my_monster_id)
REFERENCES monsters (monster_id),
CONSTRAINT foe_spawn_point_fk FOREIGN KEY (foe_spawn_point)
REFERENCES spawntypes (spawn_point),
CONSTRAINT fight_id_pk PRIMARY KEY (fight_id)
);
このデータが与えられた場合、この 2 つのタスクを簡単に実行するにはどうすればよいでしょうか。
1) ファイト ID のみをパラメーターとして渡し、foe_spawn_point (ファイト テーブル内) を指定すると、spawntypes テーブルを参照するこのスポーン ポイントに関連する unitary_experience を返す pl/sql 関数を作成したいと思います。 ? :-/ [f(x)]
戦闘から獲得した合計経験値 (unitary_experience * fight_length) を計算するために、特定の戦闘で、fight_end を fight_start で減算する関数を作成したので、戦闘がどれくらい続いたかがわかります。[f(y)]
2) データベース作成タスク中に、この 2 つの関数を使用する (それらが返す結果を乗算する) ことは可能ですか?
INSERT INTO と戦う VALUES(.... , f(x) * f(y), '戦利品 A');
ファイト テーブル内のすべての total_experience エントリを設定するには?
ご協力ありがとうございました