0

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

在一个场景中,客户将提供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)

但它不插入任何记录

谢谢你的帮助

4

2 回答 2

1

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

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

  2. 如果确认,请编写一个存储过程,其中,

a) 运行 Select 查询并在变量中设置结果。

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

于 2012-04-17T20:57:41.227 回答
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)

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

于 2012-04-17T20:58:17.403 回答