如何通过从另一个表中选择一些值来插入数据

时间:2012-04-17 20:44:46

标签: .net sql sql-server-2005

我需要根据用户提供的值选择所需值的某些部分来插入数据。

在场景中,客户端将提供staff_name, customer_nameproduct_nameINSERT将从其他表中查找必要的数据以提取相应的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)

但它没有插入任何记录

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我认为解决方案在于简化它。这是我的建议,

  1. 运行您的选择查询并确认它是否返回结果。

  2. 如果确认,请编写存储过程,

  3. a)运行选择查询并在变量中设置结果。

    b)使用给定变量执行Insert语句。

答案 1 :(得分:1)

实际上,这里有两个单独的查询,可以单独测试。

我的意思是,你为什么不先测试这部分:

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)

看看是否有任何数据返回。