我有两个表格,其中包含有关产品的信息
products
+-----------+------------+
|productid |productname |
|Int |varchar(50) |
+-----------+------------+
productdetail
+---------+----------+------------+------+------+
|detailId |productid |description |price |stock |
|Int |Int |Text |Money |Int |
| |FK_From_ | | | |
| |productid_| | | |
| |products | | | |
+---------+----------+------------+------+------+
我试图通过将productName和stock传递给存储过程来使用TSQL更新库存水平。我希望能够做这样的事情
Pseudo Code
UPDATE productdetail.stock
SET stock = @stock
WHERE productdetail.productid = products.productname
我“想”我需要使用某种连接语句并查看this
并试图改变它以适合我的代码,但没有成功。
我想在一个查询中做什么?或者我是否需要首先选择productid,将其设置为变量然后将其用作更新查询的一部分,如果有可能使用JOIN语句,它会看起来像like
这样:
UPDATE tab_productdetails
SET stock = @newStock
FROM tab_productdetails productid
INNER JOIN
tab_productdetails productid ON
@productName = tab_products.productname
我正在使用SQL server 2012 express。如果这有任何区别。
答案 0 :(得分:2)
您不需要JOIN
来更新表格。您需要使用where
和select
UPDATE productdetail
SET stock = @stock
WHERE productid = (select productid from products where productname = @productname )
此处@productname
是您传递给查询的产品名称。
答案 1 :(得分:1)
你不需要一个联接(但你可以这样做)。 最清楚的方法是使用子查询:
UPDATE productdetail
SET stock = @newStock
WHERE productid = (SELECT productid FROM products WHERE product_name=@productname)