「市場で入手可能な」製品と「まだ開発中」の製品を 2 つの別々のテーブル (market_product
とdev_product
) に格納するデータベースがあります。3 番目の表 (物質) には、製品を構成するすべての物質が含まれています。他の 2 つの表 (marked_product_comp
およびdev_product_comp
) は、製品構成を保持します。
市販品と同じ成分で開発中の商品を選びたい。
次の (簡略化された) 例では、クエリは dev_product テーブルから ID = 2 の製品を選択する必要があります。
CREATE table market_product (ID SERIAL PRIMARY KEY);
CREATE table dev_product (ID SERIAL PRIMARY KEY);
CREATE table substance (ID SERIAL PRIMARY KEY);
CREATE table market_product_comp (prodID SERIAL, substID SERIAL, PRIMARY KEY(prodID,substID));
CREATE table dev_product_comp (devID SERIAL, substID SERIAL, PRIMARY KEY(devID,substID));
INSERT INTO market_product VALUES (1),(2);
INSERT INTO dev_product VALUES (1),(2);
INSERT INTO substance VALUES (1),(2),(3);
INSERT INTO market_product_comp VALUES (1,1),(1,2),(2,3);
INSERT INTO dev_product_comp VALUES (1,2),(2,1),(2,2);
そのようなクエリを書く方法は?
アップデート:
申し訳ありませんが、あいまいな方法で質問したことに気づいていませんでした。
少なくとも 1 つの市販製品と同じ組成を持つ開発中の製品を選択したい。例えば、dev_product
物質 {1,2} でできた があり、物質 {1,2,3} でできた が 1 つしかない場合、それは組成が異なるためmarket_product
破棄したいと思います。dev_product
これが明確になることを願っています。