0

次のphpコードを使用して、商品の最低価格を「prices」テーブルから「product」テーブルに配置しています。

私はそれぞれ500以上の価格で約10.000の製品を持っているので、その作業は非常に困難です。

phpコードなしで単一のmysqlクエリでこれを行うことは可能ですか?

 $last_year_date = date("Y-m-d",strtotime('first day of last year'));

 for ($i=1; $i<=10000; $i++){ 

 $query_min_p = "SELECT min(price) as min FROM prices WHERE (product_id = {$i} AND price > 0 AND price_date >= '".$last_year_date."' )";
 $result_min_p = mysql_query($query_min_p);

        while($row = mysql_fetch_array($result_min_p)){
             if ($row['min'] > 0 ){
                $query = "UPDATE products SET min_p = '".$row['min']."' WHERE (product_id = {$i})";
                $result = mysql_query($query);                 
             }
        }

  }
4

1 に答える 1

2

次のように、にサブクエリを含めることができますupdate

update products
    set min_p = (select min(price) from prices where prices.product_id = product.product_id)

price(product_id、price)にインデックスがある場合、これははるかに高速に実行されます。

于 2013-01-22T01:55:31.337 に答える