我正在创建一个电子商务商店,其中SQL数据库设置了购物车。我设法让购物车工作,并在数据库中设置了几个表。我现在遇到了不同尺寸产品的问题,例如衬衫将有3种不同的尺码,每种尺码也会有不同的价格。
以下是我的表格设置方式:
CREATE TABLE products(
id int(11) NOT NULL auto_increment,
product_name varchar(255) NOT NULL,
price varchar(16) NOT NULL,
details text NOT NULL,
category varchar(16) NOT NULL,
subcategory varchar(16) NOT NULL,
date_added date NOT NULL,
PRIMARY KEY(id),
UNIQUE KEY product_name (product_name)
)
CREATE TABLE admin(
id int(11) NOT NULL auto_increment,
username varchar(24) NOT NULL,
password varchar(24) NOT NULL,
last_log_date date NOT NULL,
PRIMARY KEY(id),
UNIQUE KEY username (username)
)
CREATE TABLE sizes(
SizeID int(11) NOT NULL auto_increment,
id int(11) NOT NULL auto_increment,
Size varchar(24) NOT NULL,
Price varchar(6) NOT NULL,
PRIMARY KEY(sizeID),
UNIQUE KEY ID (ID)
)
我可以从产品表,名称,价格,类别等中获取信息,但我如何从尺寸表和产品表中选择信息。这些信息必须匹配,因此表格必须由FK链接?
if(isset($_GET['id'])){
$id = preg_replace('#[^0-9]#i', '', $_GET["id"]);
//use this var to check to see if this ID exists, if yes then get the product
//details, if no then ecit this script and give message why
$sql=mysql_query("SELECT*FROM products WHERE id='$id' LIMIT 1");
$productCount=mysql_num_rows($sql);//count number of rows in sql variable
if($productCount>0){
//get all product details
while($row=mysql_fetch_array($sql)){
$id=$row["id"];
$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"]));
//product_name, price, details, category, subcategory, date_added
}
}else{
echo "This item does not exist.";
exit();
}
}else{
echo "Data to render this page is missing.";
exit();
}
这会从产品表中获取数据,但我仍需要尺寸表中的尺寸和价格,并且需要匹配商品ID。我该怎么做呢?
答案 0 :(得分:2)
从数据库设计的角度来看,您可能希望大小和产品之间存在多对多的关系。而且,如果尺寸影响价格,您将希望将价格存储在多对多的表格中。
此外,将价格存储为数字,而不是varchar。你可能想用它做数学。
答案 1 :(得分:1)
我认为你应该再增加一个表(例如product_sizes):
CREATE TABLE product_sizes(
product_id int(11),
size_id int(11)
);
此表格会将您的产品与您的尺寸相关联。 在这种情况下,您的查询将如下所示:
SELECT p.*, s.Size, s.Price
FROM products AS p, sizes AS s, product_sizes AS ps
WHERE p.id=ps.product_id AND s.id=ps.size_id
AND .... your additional conditions
这是数据库中的多对多关系。
在这里,您可以阅读有关这些关系的更多信息:http://sqlrelationship.com/many-to-many-relationship/
答案 2 :(得分:-2)
选择a.name,a.price,a.category,b.price,b.size 来自产品a,尺寸b 其中a.id = b.id
所以你要将$ sql设置为这个查询