【发布时间】:2012-01-09 10:32:54
【问题描述】:
我正在尝试避免在我正在处理的项目中循环访问数据库。不太擅长使用 SQL,我不确定解决此问题的最佳方法。
我正在更新具有多个库存位置/挑选位置的销售过程中的库存级别数据库。
因此,这就是我正在做的。
遍历产品 ID,然后遍历每个产品的拣货地点并随时更新数量,例如:
For Each wProductId In calculatedProds.Keys '' loop through products requested passing values of pick locations
For i = 0 To locationCount ' split the location value from the string as per above
Dim thisLocation As Integer = locationID
Dim thisQty As Integer = qtyPicked
Dim sql As String = "UPDATE `stockLevels` SET `stockLevel`=`stockLevel` - '" & thisQty & "' WHERE `stockLocation`='" & thisLocation & "' AND `id`='" & wProductId & "'"
' DO DATA ACCESS WITH SQL ABOVE
Next
Next
这当然可行,但它会为每个库存位置、每个项目打开一个新的数据库连接。
那么我如何将它整合到一个更新语句中呢?
我认为,该链接使我非常接近我所追求的,但我不能 100% 确定如何动态构建该 SQL 语句以及如何向 CASE 添加两个条件。
我需要构建一个类似的 SQL 语句:
UPDATE stockLevels
SET stockLevel= CASE id
WHEN '"& wProductId &"' AND stockLocation='"& thisLocation &"' THEN `stockLevel` - '" & thisQty & "'
WHEN '"& NEXTwProductId &"' AND stockLocation='"& NEXTthisLocation &"' THEN `stockLevel` - '" & NEXTthisQty & "'
END
但是我在 CASE 中添加第二个参数的地方是不正确的!
像往常一样,我正在使用 MySQL 和 VB.NET,非常感谢任何帮助。
【问题讨论】:
标签: mysql sql sql-update