【发布时间】:2012-04-29 05:50:04
【问题描述】:
我需要根据用户提供的值选择所需的部分值来插入数据。
在场景中,客户端将提供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)
但它没有插入任何记录
感谢您的帮助
【问题讨论】:
-
好吧,第一步是:单独运行
SELECT- 它会返回任何内容吗?我最关心的是:您正在加入Staff表,但没有提供任何 JOIN 条件....这最终会成为笛卡尔积 - 这是您真正想要的吗?另外:与客户的交叉连接 - 真的吗?库存和客户之间没有任何联系吗?似乎你加入了太多东西,加入条件太少(我的口味)..... -
看到您已经有四个用于插入的 SQL 变量 - 为什么您不能在
INSERT之前使用语句确定正确的stockId、customerId和staff.id?我假设你想各有一个 - 对吧?? -
@UmutDerbentoğlu 这是查询设计器在视觉工作室中给我的
-
@marc_s 你的第一个问题,它不可能单独执行,因为这个 select 语句与 insert 语句绑定
-
只需注释
INSERT INTO.....部分......
标签: .net sql sql-server-2005