0

私は 500 個のテーブルを持っており、すべて「売上」フィールドに金額のレコードが含まれています。

以下は、テーブルごとの緑のアイテムの合計売上を取得します。

$tabletotal = mysql_query("SELECT sum(sales) FROM databasename.$tablename
WHERE type = 'green' AND descr  LIKE '%SOLD%'   ");
$row = mysql_fetch_assoc($tabletotal);
$answer= $row['sum(sales)'];

したがって、特定のテーブルに 4 つの緑色のアイテムがあり、それらが 4 ドル、6 ドル、7 ドル、3 ドルで販売されている場合、上の答えは 20 ドルです。

さて、どうすればよいかわかりませんが、すべての 500 テーブルのすべての緑色のアイテムの合計を取得することです。したがって、テーブル 1 の合計が 20 ドル、テーブル 2 の合計が 36 ドル、テーブル 3 の合計が 15 ドルなどの場合、すべてのテーブルの総合計をまとめて取得したいと考えています (この場合は 71 ドルですが、明らかに500テーブル)。

誰でも助けてくれますか?

4

1 に答える 1

0

おそらく、for ループを使用するのが最適です。

$tables = array('tbl1', 'tbl2', 'tbl3', ..., 'tbl499');
$total = 0;
foreach ($tables as $t)
{
    $tabletotal = mysql_query("SELECT sum(sales) tot FROM databasename.$t WHERE type = 'green' AND descr LIKE '%SOLD%'");
    $row = mysql_fetch_assoc($tabletotal);
    $total += $row['tot'];
}

別の方法として、s を使用して巨大な SQL クエリを生成することもできますが、UNION本質的には同じことです。

Dream Eaterが言及しているように。そもそも、このような状況にあってはなりません。

于 2013-03-18T00:58:13.660 に答える