テーブル内の一連のレコードを選択し、2 番目の選択に基づいて、最初の選択からテーブルに新しいレコードを書き込むシナリオがあります。
選択してから書き込みたいテーブルは次のとおりです。
弾丸 ------- ID 製品コード catalogue_category_id bullet_text sort_sequence
Note id はキーであり、自動インクリメント整数です
次のようにレコードを選択します。
SELECT product_code, catalogue_category_id, bullet_text, sort_sequence
FROM bullets
WHERE product_code = '10001'
この製品の場合、これにより 4 行が与えられます。箇条書きの数は製品ごとに異なる場合があります。結果は次のとおりです。
10001, , テストの箇条書き - 10001, 10001, , 2 番目の箇条書き, 10001, , 3 番目の箇条書き, 10001、、、第4弾、
この場合、catalogue_category_id と sort_sequence は空ですが、常にそうであるとは限りません。
次に、いくつかの製品コードを選択して、この場合は箇条書きごとに 4 つのレコードを記述します。
製品コードのリストを取得する 2 番目の select ステートメントは次のとおりです。
SELECT product_code
FROM master
WHERE product_group = '1'
AND product_code != '10001'
これにより、17 個の製品コードが返されますが、選択されている product_group に応じて、それより少ない場合も多い場合もあります。
新しいレコードは次のとおりです。
id - これは自動インクリメントされます product_code - これは、2 番目の select ステートメントからの新しい製品コードになります。 catalogue_category_id - これは、最初の選択ステートメントから選択されたデータになります bullet_text - これは、最初の select ステートメントから選択されたデータになります。 sort_sequence - これは、最初の select ステートメントから選択されたデータになります
したがって、この例では、17 の製品コードごとに 4 つずつ、合計 68 の新しいレコードを箇条書きに書き込みます。
これを行うにはストアドプロシージャが必要だと思いますが、検索して、見た結果に頭を悩ませることはできません。どんな助けでも大歓迎です。
68 個のレコードが新しいレコードとして Bullets テーブルに書き込まれます。選択されたレコードには、入力された 4 つのフィールドのすべてまたは任意の組み合わせが含まれる場合があります。
product_code、catalogue_category_id、bullet_text、sort_sequence
基本的に、ID と製品コードを除いて、選択したレコードを複製しようとしています。たとえば、3 つの製品コードがあるとします。
10002、10003、10004
2 番目の select ステートメントを使用して返された場合、12 個の新しいレコードを取得します。最初の SELECT ステートメントの最初の 4 つとほぼ同じ 4 つのセットが 3 つあり、ID は自動インクリメントされ、製品コードは次のようになります。
最初の 4 つの新しいレコードの場合は 10002 次の 4 つの新しいレコードには 10003 最後の 4 つの場合は 10004
各分野ごとに選んだものを書いていきます。選択した 4 つのレコードのうち 2 つが catalogue_category_id フィールドにデータを持つ例を使用すると、68 個の新しいレコードのうち 34 個が catalogue_category_id フィールドにデータを持つことになります。