1

我有一个产品提要,它多次列出服装项目,每种颜色和尺寸的项目都列出一次。

ProductID      Product Name               Colour      Size      Price

1              Men's Board Shorts         Blue        S         4.99
1              Men's Board Shorts         Blue        M         4.99
1              Men's Board Shorts         Blue        L         5.99
1              Men's Board Shorts         Red         S         4.99
1              Men's Board Shorts         Red         M         4.99
1              Men's Board Shorts         Red         L         5.99

我有两张表:一张用于名称和 ID,另一张用于每种产品的 ID、颜色、尺寸和价格。

在第一个表中,我只希望每个产品的产品名称出现一次,而不考虑不同尺寸和颜色的数量。在第二个表中,我希望产品的 ID 代码、尺寸和价格出现在每种可用的不同颜色中。

所以我最终会得到以下数据:

Product Table
1     Men's Board Shorts

Options Table
1     Blue     S         4.99
1     Blue     M         4.99
1     Blue     L         5.99
1     Red      S         4.99
1     Red      M         4.99
1     Red      M         5.99

将尺寸分成单独的记录而不是在一个字段中具有尺寸 S、M、L 的原因是,有时大件商品的价格与中小型商品的价格不同。

有什么想法可以让我开始/指出正确的方向吗?

谢谢...

4

2 回答 2

0

第一张表:

CREATE TABLE IF NOT EXISTS `products` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
) AUTO_INCREMENT=1 ;

INSERT INTO `products` (`name`) SELECT `p_name` FROM `source_table`;

第二张表:

CREATE TABLE IF NOT EXISTS `options` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `colour` varchar(12) NOT NULL,
    `size` char(1) NOT NULL,
    `price` float unsigned NOT NULL,
    PRIMARY KEY (`id`)
)  AUTO_INCREMENT=1 ;

INSERT INTO `options` (`colour`, `size`, `price`) SELECT `p_colour`, `p_size`, `p_price` FROM `source_table`;

我只是希望我正确理解了你的问题。:)

于 2012-09-23T14:30:11.487 回答
0

创建2个表:

 CREATE TABLE product (
  id INT NOT NULL PRIMARY KEY,
  name VARCHAR() NOT NULL
  );
 CREATE TABLE options (
  product_id INT NOT NULL PRIMARY KEY,
  color VARCHAR(30),
  size VARCHAR(10),
  price DECIMAL(10,2)  
 );

在表中获取和插入记录:

 $result1 = mysql_fetch_assoc(mysql_query('SELECT * from ProductTemp GROUP BY ProductID', $conn));

 $result2 = mysql_fetch_assoc(mysql_query('SELECT * from ProductTemp', $conn));

 foreach( $result1 as $v ) {
  $retval1 = mysql_query("INSERT INTO product VALUES('$v['ProductID']','$v['Product Name']')", $conn);
  if(!$retval1) {
  echo 'Could not enter data into table product: ' . mysql_error(); 
  exit;
 }
 }

  foreach( $result2 as $v ) { 
 $retval2 = mysql_query("INSERT INTO options VALUES('$v['ProductID']','$v['Color']','$v['Size']' , $v['Price'])", $conn); 

if(!$retval2 ) {
  echo 'Could not enter data into table options: ' . mysql_error(); 
  exit;
 }
 } 
于 2012-09-23T13:53:56.263 回答