2012-04-17 29 views
0

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

scenerioでは、クライアントはstaff_name, customer_nameproduct_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) 

を持っているものですが、それは任意のレコードに私は解決策は、それを単純化することにあると思いますあなたの助け

+3

さて、最初のステップは次のようなものです:それ自身で 'SELECT'を実行します - それは何かを返しますか?私が最も心配しているのは、あなたは「スタッフ」テーブルに参加していますが、JOIN状態を提供していません....それはデカルト製品になります。また、顧客とのつながり - 本当ですか??株式と顧客の間には何の関係もありませんか? –

+0

あなたはすでにあなたの挿入用に4つのSQL変数を持っているのを見て、なぜあなたは正しい 'stockId'を決めることができなかったのですか? 、 'customerId'と' staff.id'を 'INSERT'の前の文で置き換えます。私はあなたが1つずつ持っていたいと思っています - そうですか? UmutDerbentoğluこの@ –

+0

は、クエリデザイナーは、このselect文がINSERT文 – Smith

答えて

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) 

そして、返されたデータがあるかどうかを。

+0

このselect文はinsert文に結び付けられているため、この単独では実行できません – Smith

+0

選択項目から余分なパラメータ( '@vehicle_regno'、 '@order_details'、 '@total_price'および '@order_date')を削除するとどうなりますか? - 「単独」の選択クエリを実行すると、データを見ることができますか? – Mikhail

1

ため

感謝を挿入しません。ここで私は示唆しているものだ、

  1. はあなたの選択クエリを実行し、結果を返すだかどうかを確認します。確認された場合

  2. 、変数で

a)のファイル名を指定して実行を選択クエリと結果セット、ここでストアドプロシージャを記述します。

b)に与えられた変数とINSERT文を実行します。

+0

あなたは私とこの事例を教えてくれますか? – Smith