比较3个表并创建价格最低的新表

时间:2012-05-14 19:45:42

标签: php mysql

你好我在我的数据库中创建了3个表。

表A =经销商A

表B =经销商B

表C =经销商C

每个表都使用每个分销商的以下字段进行更新。

Sku,Price,Stock,产品名称,经销商名称

我现在要做的是创建一个新表格,其中准备导入的价格应该是。

有以下规则:

如果stock = 0,请跳过

如果所有3个分销商表中的相同sku,请采用最低价格并以最低价格更新。

所以我有一个包含以下内容的新表:

Sku,价格,库存,产品名称,经销商名称。

上表仅包含每个sku onces,并且始终是最低价格且正库存。

任何人: - )

×96472

225296

1 个答案:

答案 0 :(得分:0)

你的问题不是最好的,我会尽力帮助,但更好的问题会得到更好的答案。

我假设您需要保留表格3个单独的表格(我个人不会,我只是添加一个distributor字段或类似字段,并将所有内容放在一个表格中。

(根据你的PHP标签判断,我会把它放在php中) 我将提供一个相当具体的例子,但重要的是你要了解它是如何工作的,这样你才能适应它。

//Dist. A
$query = "SELECT * FROM `db`.`table_a` WHERE 1 ORDER BY `sku` DESC"; //Get the list of products
$result = mysql_query ($query) or die (mysql_error());
while ( $row = mysql_fetch_assoc($result)) {
  if ( $row['stock'] != 0 ) { //If we have stock...
    $query = "SELECT * FROM `final_table` WHERE `sku` LIKE '".$row['sku']."'"; //See if we have the data in the final table
    $final_result = mysql_query ($query) or die (mysql_error());
    if ( mysql_num_rows($final_result) == 0 ) { //Product Not in new table
      $query = "INSERT INTO `final_table` VALUES ( '".$row['sku']."' [The rest of your values]";
      mysql_query ($query) or die (mysql_error());
    }
    if ( mysql_num_rows($final_result) >= 1 ) { //Product In new table
      $new_row = mysql_fetch_assoc($new_result); //Get the data into an array so we can compare the prices
      if ( $row['price'] < $final_row['price'] ) { //New price is lower
        $query = "UPDATE `final_table` SET `dist` = 'A', `price` = '".$row['price']."' [Other Vars that need update] WHERE `sku` LIKE '"$row['sku']"'";
        mysql_query ($query) or die (mysql_error());
      }
    }
  }
}

然后为B和C表重复它,更新表名和放在最终数据库中的值。

(我意识到我可能违反了该示例中的一些约定,但概念就在那里。)

这确实假设了一些事情,主要是sku是某种独特的索引。