问题描述
当前我的类图如下:
,我想更新 ALL 我的产品详细信息(prodName,prodDesc,prodCategory,prodDesc,制造商,供应商,stockLevel,reorderLevel,单价)。 / p>
所以我使用以下SQL查询: 但无法正常工作,我的查询正确吗? 这是我的代码部分 最初,我使用了此查询,UPDATE Product
SET prodName = @prodName,prodCategory = @prodCategory,prodDesc = @prodDesc,manufacturer = @manufacturer,supplier = @supplier,stockLevel = @stockLevel,reorderLevel = @reorderLevel,unitPrice = @unitPrice
FROM product a,supply_item b,supply c
WHERE a.prodID = @prodID AND
@prodID = b.prodID AND
b.supplyID = c.supplyID;
protected void editSubmit_Click(object sender,EventArgs e)
{
MysqLConnection conn = new MysqLConnection(sqlConn);
string sql = "UPDATE Product SET prodName = @prodName,unitPrice = @unitPrice FROM product a,supply c WHERE a.prodID = @prodID AND @prodID = b.prodID AND b.supplyID = c.supplyID;";
MysqLCommand cmd = new MysqLCommand(sql,conn);
conn.open();
cmd.Parameters.AddWithValue("@prodName",txtProductName.Text);
cmd.Parameters.AddWithValue("@prodCategory",txtCategory.Text);
cmd.Parameters.AddWithValue("@prodDesc",txtProductDesc.Text);
cmd.Parameters.AddWithValue("@manufacturer",txtManufacturer.Text);
cmd.Parameters.AddWithValue("@supplier",txtsupplier.Text);
cmd.Parameters.AddWithValue("@stockLevel",txtStockLvl.Text);
cmd.Parameters.AddWithValue("@reorderLevel",txtReorderLvl.Text);
cmd.Parameters.AddWithValue("@unitPrice",txtPrice.Text);
cmd.Parameters.AddWithValue("@prodID",txtProductID.Text);
cmd.ExecuteNonQuery();
conn.Close();
}
"UPDATE Product SET prodName = @prodName,unitPrice = @unitPrice WHERE prodID = @prodID"
解决方法
MySQL中的等效项似乎是:
UPDATE product p JOIN
supply_item si
ON p.prodId = si.prodId JOIN
supply s
ON s.supplyID = si.supplyID;
SET p.prodName = @prodName,p.prodCategory = @prodCategory,p.prodDesc = @prodDesc,p.manufacturer = @manufacturer,p.supplier = @supplier,p.stockLevel = @stockLevel,p.reorderLevel = @reorderLevel,p.unitPrice = @unitPrice
WHERE p.prodID = @prodID;
注意:
- 从不在
FROM
子句中使用逗号。 - 始终使用正确的,明确的,标准,可读的
JOIN
语法。 - 使用有意义的表别名(例如表名的缩写),而不是任意字母。