0

こんにちは、DB に 3 つのテーブルを作成しました。

表 A = ディストリビューター A

表 B = ディストリビュータ B

表 C = ディストリビューター C

各テーブルは、各ディストリビューターからの次のフィールドで更新されます。

SKU、価格、在庫、商品名、販売元名

私が今やりたいことは、インポートの準備ができている価格があるべき新しいテーブルを作成することです.

次の規則があります。

在庫 = 0 の場合はスキップ

同じ SKU が 3 つのディストリビューター テーブルすべてにある場合は、最低価格を採用し、最低価格で更新します。

だから私は以下を含む新しいテーブルを持っています:

SKU、価格、在庫、商品名、販売店名。

上の表には、各 SKU が 1 回だけ含まれており、在庫がプラスの場合は常に最低価格です。

誰でも:-)

× 96472

225296

4

1 に答える 1

0

あなたの質問は最善ではありません。私は助けようとしますが、より良い質問にはより良い答えが得られます.

テーブルを3つの別々のテーブルに保持する必要があると仮定します(個人的にはそうしません。distributorフィールドなどを追加して、すべてを1つのテーブルに配置します)。

(あなたの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これは、主にある種の一意のインデックスであるいくつかのことを前提としています。

于 2012-05-14T20:32:59.253 に答える