0

ユーザーから提供された値に基づいて、必要な値の一部を選択してデータを挿入する必要があります。

シーンリオでは、クライアントは、、staff_name, customer_nameおよびを提供しますproduct_name。はINSERT、他のテーブルから必要なデータを検索して、対応するIDを取得します。

これは私が現在持っているものです

INSERT INTO [Order](product_id, 
                    customer_id, 
                    staff_id, 
                    vehicle_regno, 
                    order_details, 
                    total_price, 
                    order_date)
     SELECT     
         stock.id, 
         customers.id AS Expr1, 
         Staff.id AS Expr2, 
         @vehicle_regno AS Expr3, 
         @order_details AS Expr4, 
         @total_price AS Expr5, 
         @order_date AS Expr6
     FROM         
         stock 
     CROSS JOIN
         customers CROSS 
     JOIN
         Staff
     WHERE     
         (stock.name = @stock_name) 
         AND (customers.name = @customers_name) 
         AND (Staff.name = @staff_name)

ただし、レコードは挿入されません

ご協力いただきありがとうございます

4

2 に答える 2

1

解決策はそれを単純化することにあると思います。これが私が提案することです、

  1. selectクエリを実行し、結果が返されるかどうかを確認します。

  2. 確認された場合は、次のようなストアドプロシージャを記述します。

a)Selectクエリを実行し、結果を変数に設定します。

b)指定された変数を使用してInsertステートメントを実行します。

于 2012-04-17T20:57:41.227 に答える
1

実際、ここには2つの別々のクエリがあり、別々にテストできます。

つまり、最初にこの部分をテストしてみませんか。

SELECT     
     stock.id, 
     customers.id AS Expr1, 
     Staff.id AS Expr2, 
     @vehicle_regno AS Expr3, 
     @order_details AS Expr4, 
     @total_price AS Expr5, 
     @order_date AS Expr6
 FROM         
     stock 
 CROSS JOIN
     customers CROSS 
 JOIN
     Staff
 WHERE     
     (stock.name = @stock_name) 
     AND (customers.name = @customers_name) 
     AND (Staff.name = @staff_name)

そして、返されるデータがあるかどうかを確認します。

于 2012-04-17T20:58:17.403 に答える