我有一个pricing
表和一个products
在 MySQL 5.1.70 中构建的表。
新的定价表结构:
`priceid` int(11) NOT NULL AUTO_INCREMENT
`itemid` int(11) NOT NULL DEFAULT '0'
`class` enum('standard','wholesale') NOT NULL
`price` decimal(12,2) NOT NULL DEFAULT '0.00'
`owner` int(11) NOT NULL DEFAULT '0'
旧的定价表结构:
`priceid` int(11) NOT NULL AUTO_INCREMENT
`itemid` int(11) NOT NULL DEFAULT '0'
`price` decimal(12,2) NOT NULL DEFAULT '0.00'
`owner` int(11) NOT NULL DEFAULT '0'
新产品表结构:
`itemid` int(11) NOT NULL AUTO_INCREMENT
`title` varchar(255) NOT NULL DEFAULT ''
`msrp` decimal(12,2) NOT NULL DEFAULT '0.00'
老产品表结构:
`itemid` int(11) NOT NULL AUTO_INCREMENT
`title` varchar(255) NOT NULL DEFAULT ''
`wholesale_price` decimal(12,2) NOT NULL DEFAULT '0.00'
`msrp` decimal(12,2) NOT NULL DEFAULT '0.00'
以下是新产品表中的示例行:
'12345', 'Toy Drum', '25.00'
以下是同一商品的新定价表中的两个示例行:
'123', '12345', 'wholesale', '10.00', '2'
'124', '12345', 'standard', '20.00', '2'
我有以下查询,我正在尝试修改以使用上面的新表设置,因为旧设置wholesale_price
在products
表中:
UPDATE products, pricing, price_rules
SET pricing.price = IF(
price_rules.markdown > 0,
products.msrp - price_rules.markdown * products.msrp,
products.wholesale_price + price_rules.markup * products.wholesale_price
) WHERE
products.itemid = pricing.itemid AND
pricing.owner = price_rules.owner;
复杂的是,现在批发价和标准价都在同一张表下,itemid
但不同class
。
我如何使这个查询在新的表结构下(有效地)工作?
表有大约 200,000 条记录。