【问题标题】:Compare 3 tables and create new table with lowest price比较 3 个表并以最低价格创建新表
【发布时间】:2012-05-22 07:59:36
【问题描述】:

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

表 A = 分销商 A

表 B = 分销商 B

表 C = 分配器 C

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

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

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

有以下规则:

如果库存 = 0 跳过

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

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

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

上表仅包含每个 sku 一次,并且始终以最低价格与正库存。

任何人:-)

× 96472

225296

【问题讨论】:

  • 来自FAQ您应该只根据您面临的实际问题提出实际的、可回答的问题。喋喋不休的开放式问题会降低我们网站的实用性,并将其他问题推到首页。 您可以:告诉我们您尝试了什么!
  • 告诉我们您尝试了什么。一条建议:即使每个分销商的属性相同,也不好为每个分销商拆分信息。

标签: php mysql


【解决方案1】:

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

我假设您需要将表保留为 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 表重复此操作,更新表名和放入最终 db 中的值。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 2021-04-12
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多