我正在尝试创建一个购物网站,在该网站上我销售价格每天都在波动的商品(贵金属)。我有一个表(产品),其中包含每个产品的乘数(类似于“1.1”)。我基本上不想每天到我的 table 上更改数百件商品的价格。我的想法是创建另一个表,我将每天用每日值(value)简单地更改价格字段。如何使最终产品价格总计为一个表中的乘数乘以另一个表中输入的每日价格。或者,有没有比使用两个表更好的方法?到目前为止,这是仅使用一个具有定义价格的表格的编码:
if (isset($_GET['id'])) {
//Connect To Mysql Database
include"storescripts/connect_to_mysql.php";
$id = preg_replace('#[^0-9]#i','',$_GET['id']);
//Use This VAR To Check To See If This ID Exists, If Yes Then Get Product
//Details, If No Then Exit Script and Give Message Why
$sql = mysql_query("SELECT * FROM products WHERE id='$id' LIMIT 1");
$productCount = mysql_num_rows($sql);
if ($productCount > 0) {
//Get All The Product Details
while ($row = mysql_fetch_array($sql)) {
$product_name = $row["product_name"];
$price = $row["price"];
$details = $row["details"];
$category = $row["category"];
$subcategory = $row["subcategory"];
$date_added = strftime("%b %d, %Y",strtotime($row["date_added"]));
}
} else {
echo "That Item Does Not Exist";
exit();
}
} else {
echo "Data To Render This Page Is Missing";
exit();
}
mysql_close();
最佳答案
那么,不是通常的 mysql_* 相关迂腐的回应怎么样?
在下面的架构中,我将 Material 表从列出的价格中分离出来,以便它们可以根据日期存储。您可能会发现这对记录和/或发票很有用。
TABLE products
prod_id INT PK
prod_name VARCHAR
prod_price DECIMAL
mat_id INT FK
...
TABLE materials
mat_id INT PK
mat_name VARCHAR
...
TABLE material_pricing
mat_id INT FK PK
mat_price_date DATE PK
mat_price_factor DECIMAL
SELECT
p.prod_name,
p.prod_price * pr.mat_price_factor AS 'cur_price'
FROM products p INNER JOIN materials m
ON p.mat_id = m.mat_id
INNER JOIN material_pricing pr
ON m.mat_id = pr.mat_id
WHERE mat_price_date = TODAY()
我正在想办法更改查询以获取相关 Material 的最后定义的 material_pricing
条目,但我很难为子查询排列数据...
编辑:这应该可以解决问题
SELECT
p.prod_name,
p.prod_price * pr.mat_price_factor AS 'cur_price'
FROM products p INNER JOIN materials m
ON p.mat_id = m.mat_id
INNER JOIN (
SELECT p1.*
FROM material_pricing p1 INNER JOIN (
SELECT mat_id, MAX(mat_price_date) 'mat_price_date'
FROM material_pricing
WHERE mat_price_date <= $target_date
GROUP BY mat_id
) p2
ON p1.mat_id = p2.mat_id
AND p1.mat_price_date = p2.mat_price_date
) pr
ON p.mat_id = pr.mat_id
其中最内层子查询中的 $target_date
将替换为今天的日期、TODAY()
mySQL 函数或显示的发票日期。
关于php - 要编制产品列表,特别是价格,我如何使用两个表来构建产品的总价?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14387418/