1

私は、customer_order_products3つの列を持つFKとしてcustomer_orderテーブルから来ている1つの列order_idを持っています:

  • order_id
  • product_id
  • quantity.

次のように表示されるように、それらを1つのテーブルに同時に挿入したい:::

order_id     product_id     quantity
1              20             3
1              21             2
1              17             5

これは、顧客が上記の数量を持つ 3 つの異なる製品を注文し、生成された order_id が 1 であることを意味します。

どうすればこれを実装できますか。plzzzの助けが必要です

4

2 に答える 2

0
CREATE TABLE dbo.customer_order
 (
  order_id int
  )

CREATE TABLE dbo.customer_order_products 
 (
  product_id int,
  order_id int,
  quantity int
  )  

INSERT dbo.customer_order
VALUES(1)

INSERT dbo.customer_order_products 
VALUES(20, 1, 2),
      (20, 1, 1),
      (21, 1, 1),
      (21, 1, 1),
      (17, 1, 5)

IF OBJECT_ID('tempdb.dbo.#NewTable') IS NOT NULL DROP TABLE dbo.#NewTable
SELECT c.order_id, p.product_id, SUM(quantity) AS quantity
INTO dbo.#NewTable
FROM dbo.customer_order c JOIN dbo.customer_order_products p ON c.order_id =  p.order_id
GROUP BY c.order_id, p.product_id

SELECT *
FROM dbo.#NewTable

結果:

orde_id product_id quantity
1       17         5
1       20         3
1       21         2
于 2013-03-16T08:04:37.377 に答える
0

私があなたを正しく理解していれば、プレーンINSERTで十分であり、1つのステートメントで複数の行を挿入できます

INSERT INTO customer_order_products
    ([order_id], [product_id], [quantity])
VALUES
    (1, 20, 3),
    (1, 21, 2),
    (1, 17, 5);

SQLフィドル

于 2013-03-16T06:30:26.790 に答える