ホームページ  >  記事  >  バックエンド開発  >  データベースからいくつかの数値をランダムに取り出し、それらを合計して 100 以上になるようにするにはどうすればよいですか?

データベースからいくつかの数値をランダムに取り出し、それらを合計して 100 以上になるようにするにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-23 13:30:461307ブラウズ

データベースから数値データをランダムに取り出して、100 以上の値に追加するにはどうすればよいですか?


ディスカッションに返信(解決策)

質問が少し矛盾しているように見えたので、別の方法で質問しました

データベースからいくつかの数値を取得するには、これらの数値の合計が以上である必要があります取り出す数に制限はありません
例: 2 つの数字 50 と 50 を取り出すことができ、その合計は 100 になります
4 つの数字 10、20 を取り出すこともできます。 、 20、 50、その合計も 100 に等しくなります。
これらの数値の合計が 100 より大きい場合は、 10.5、 20.5、 30、 20、 26 を取り出すこともできます。 または、 他の数値を取り出すこともできます。それはあり得る追加すると 100 以上になります。

取り出す数字は100以上であれば何個あってもランダムです

ただし、100以上になると取り出すのをやめて出力しますページに取り出された番号

アイデアを教えてください。

初めて、100 個のアイテムを直接取り出します。

次に、合計が 100 より大きいかどうかを 1 つずつ判断し、大きい場合は直接飛び出します。


この方法では、データベースに 1 回アクセスするだけで済み、時間を節約できます。

データベースにアクセスするのは 1 回だけなので、時間を節約できます。


他の兄弟がより良い方法を持っているかどうかはわかりません

select * from tbl_name a where (select sum(field) from tbl_name where id>=a.id) >


が必要です。昇順の ID フィールドアシスト

これを行う意味がわかりません

select * from tbl_name a where (select sum(field) from tbl_name where id>=a.id) > です


それは昇順 ID フィールドの支援が必要です

いいえ、これを行う意味がわかりますか

製品が多すぎて、さまざまな組み合わせを手動で計算する方法がありません。さまざまなランダムな組み合わせを前提として原価、販売価格、利益を求めると、販促活動がしやすいかどうかがよくわかりますが、単純かつ簡単に考えることができません。一時的に多くのサーバーリソースを使用する可能性があるため、効率を向上させるための良い方法がないかどうかを尋ねたいと思います。皆さんのご意見を聞かせてください。
いわゆる非効率な方法を最初に実行する必要があります。

いわゆる非効率な方法を先にやるべきです!

ああ、つまり、私が考えた方法はサーバーのリソースを多く消費する可能性があることを明確に表現していなかったため、気分を害しました。
いわゆる非効率なコードがありますが、問題は解決できます

その後、効率的なコードに最適化できます

自分が何をしたいのか、それを達成するためにどのような方法を経る必要があるのか​​を正確に伝えることはできません。どうすれば効率的になるでしょうか? コード

は、データベースからいくつかの数値を取り出す必要があります。これらの数値の合計は 100 以上でなければなりません。取り出す数値に制限はありません

たとえば、次のようになります。 2 つの数字 50 と 50 を取り出すと、合計は 100 になります
10、20、20、50 の 4 つの数字を取り出すと、合計は 100 になります。 ;
10.5、20.5、 30 、 20 、 26 、これらの数値の合計は 100 より大きくなります。
100 以上の数値。
取り出す数字は100以上なら何個でも大丈夫ですが、100以上になると取り出せなくなります。取り出したデータをページに出力します。ソリューションはシンプルであればあるほど良いのです。

これが聞きたいことです。

このようなことはデータベース単体ではできません

一つ一つ読み込むにはプログラムを組み合わせる必要があります

クエリコマンド
内部条件判定付き while ループ

どうやって作れるのか分かりません簡単です

select * from tbl_name a where (select sum(field) from tbl_name where id>=a.id) > 100


昇順の ID フィールド支援が必要です


これを出力する方法

このようなことはデータベース単体ではできません
一つ一つ読み込むにはプログラムを組み合わせる必要があります

クエリコマンド
内部条件判定付き while ループ

どうやって作れるのか分かりませんもっと簡単です



私は Buzhu のコードを直接使用したことはありませんが (この書き方をこれまでに使用したことがなく、出力方法がわかりません)、より簡単な方法を考えました。以前書いたことは、以前の書き方が複雑すぎたことがわかりました。 、以下はコードです
$rm=mysql_query("SELECT * FROM `pql_spices` ORDER by rand()");		while ($rmx=mysql_fetch_array($rm)) 		{		  $Total+=$rmx['Price'];		  if ($Total>=100)break;		  echo $rmx['id']."、".$rmx['title'];		  echo "<br />";        }		echo $Total;


select * from tbl_name a where (select sum(field) from tbl_name where id>=a.id) >
可能であれば、これを出力する方法を教えてください、ありがとうございます。

これは私が言ったことではありませんか
クエリ命令
内部条件判断を伴う while ループ


そのコマンドについては、マネージャーで実行すると何が起こっているかがわかります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。