2016-09-15 14 views
2

私は100万行のテーブルを持っていると言う。 1つの列には「グループ」が、もう1つの列には「売上」が表示されます。グループ#の範囲は1〜100,000で、各グループに約10件の販売エントリがあります。私は何とかデータを10万行にまとめるために、個々の販売ではなく各グループのSalesの合計を使用したいと考えています。SQLカラムのセクションをもっと速くまとめる

これまでの方法では、1から100,000のPHPループを実行して、各繰り返しがsum(Sales)WHERE Group = $ iにSQLクエリを送信していました。次に、それをhtmlテーブルにエコーするか、新しいSQLテーブルに挿入します。問題はこの方法に数時間かかることです。

このプロセスを改善する方法についてのヒントはありますか?速度を大幅に向上させる単一のSQLクエリとしてこれを記述する方法はありますか?おかげ

+1

データの例を追加できますか? – Evgeniy

答えて

4

ただ、GROUP BYしてみてください:バック含める

SELECT `group`, sum(sales) 
FROM your_table 
GROUP BY `group` 

編集groupためティック。それらがなければ、エラーが返されます

+2

'Group'は予約語で、エスケープします。 –

+0

更新が行われました。ありがとう@u_mulder – kbball

+1

完璧!私はそれが何か簡単だと分かっていました。このサイトは最高です。 – Tortooga

0

他の解決策がない限り、常にループ内でSQLクエリを避ける必要があります。この場合、一度にすべてのフィールドを取得し、それらを配列にしてPHPでそのように追加することができます。

+0

これは答えではなく、単なるコメントです。 –

+0

そして、準備されたステートメントの文脈では、それは本当ではありません。 – Strawberry

+0

しかし、私が前に答えを発表した前に私は個人に答える予定だった - しかし、その点を理解することはまだ重要だと感じました - それはおそらくコメントに移されるべきです。また、準備されたステートメントのように常にそうであるとは限りません。なぜなら、「他の解決策がない限り」つまり、ループ内で実行しないと実行できない場合です。 – mbacklas

関連する問題