Join & Require Query
というのは、おそらく正しい用語ではないため、私が意味することを説明する必要があります。この質問のために、ビデオゲームのためのワイヤフレームから外れるテーブルの非常に単純なサブセットを設定しました。私は事前にお詫びします、SQLFiddleは今働いていません。Join&Requireクエリを作成する方法を理解するのに問題があります
CREATE TABLE reqs (
crafted_id INT, item_id INT);
CREATE TABLE items (
id INT, name VARCHAR(30));
CREATE TABLE crafted (
id INT, name VARCHAR(30));
これらの表では、サンプルデータもいくつか作成しました。私はこれらのテーブルでauto_incrementを使用しなかったので、より優れた視覚効果を得ることができました。この例では
INSERT INTO items (id, name) VALUES (1, 'Herbs');
INSERT INTO items (id, name) VALUES (2, 'Health Potion');
INSERT INTO items (id, name) VALUES (3, 'Leather');
INSERT INTO items (id, name) VALUES (4, 'Sticks');
INSERT INTO crafted (id, name) VALUES (101, 'Cured Leather');
INSERT INTO crafted (id, name) VALUES (102, 'Tea');
INSERT INTO reqs (crafted_id, item_id) VALUES (101, 1);
INSERT INTO reqs (crafted_id, item_id) VALUES (101, 3);
INSERT INTO reqs (crafted_id, item_id) VALUES (102, 1);
私はセットアップに細工された項目が他の項目を必要とするゲームでクラフトシステムの非常に最小限の例があります。
items
に基づいてcrafted
テーブルから利用可能な値をすべて取得できるクエリを作成する必要があります。例えば、上記のデータに基づいて、私は次のようにします:
requestCraftableItems(itemArray) {
// Execute query based on array here
};
requestCraftableItems([1, 2, 3])
これは、ユーザーがアイテム1, 3, & 4
を持っていることを示すクエリを実行し、reqs.crafted_id
ためreqs.item_id
の全てが満たされたcrafted
エントリを検索してみてくださいアイテム配列に格納されます。
requestCraftableItems([1, 3, 4]);
それは、細工されたエントリを返す必要があります:硬化皮革用crafted_id項目1 & 3
を必要とし、ユーザーは次のことを実行した場合tea
ためcrafted_idだからアイテム1
を必要とするため、この例では何も、返されるべきではありませんユーザが1 & 3
をクエリに提供したので、Cured Leather
とTea
です。
これは私のもともとの使用例ではなく、私が非常に単純なスケールで何をしようとしているのかのポイントを得るための単なる例です。
EDIT:値は、(1)クエリに渡された場合、硬化革が必要とclairfyするには、Cured Leather
は、結果に表示されてはならないBOTH 1と3
を含むことができ、私はあなたが何を意味するかわからないんだけど@Strawberry、シーケンスは指定されたパラメータに基づいて共有されています。 '1'を供給するだけで' Tea'が返されますが、 '1&3'を供給すると' Tea&Cured Leather'が供給されます。彼らが一緒にいるので、なぜ/私はこれらを分けるのか分からない。 – Hobbyist
@Strawberry私はあなたがそれをより明確にする方法を提案していることを理解しています。私はあなたの提案を理解していません。それで全部です。 idカラムの良い点。ありがとう。 – Hobbyist
@Strawberryありがとうございました。 – Hobbyist