ホームページ > バックエンド開発 > PHPチュートリアル > php または mysql でアルゴリズムを見つけますか?

php または mysql でアルゴリズムを見つけますか?

WBOY
リリース: 2016-06-23 14:05:42
オリジナル
897 人が閲覧しました


これはデータベースクエリの結果です。 ownow今表示する必要がある結果は(価格は元々直接結果を得たので、利便性のために式に書きました):
価格注文_ID表示する必要がある結果は(価格)x0045178

計算アイデア:同じ注文番号、(20/60)*70、(40/60)*70、異なる注文番号は価格値を直接取得します。




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

60は指定されていますか? 70もあり、上記の結果はまた* 700となり、意味不明です。

60は指定されていますか? 70もあり、上記の結果はまた* 700となり、意味不明です。

計算の考え方は次のとおりです。同じ注文番号、(20/60)*700、(40/60)*700、異なる注文番号は価格値を直接取得します。そういうことなんですね。 700 は同じ注文価格の合計です。 60 は、同じ注文のコスト 3 の合計です。

select cost3, (cost3/sum_cost3)*sum_price as price, a.order_id   form    tbl_name a,    (select order_id, sum(cost3) as sum_cost3, sum(price) as sum_price from tbl_name group by order_id) t  where a.order_id=t.order_id
ログイン後にコピー
を完了するには SQL を優先します
php を使用するのはより面倒です
直接クエリを実行した後

while($r = mysql_fetch_assoc($rs)) {  $st[$r['order_id']['cost3'] += $r['cost3'];  $st[$r['order_id']['price'] += $r['price'];}mysql_data_seek($rs, 0);while($r = mysql_fetch_assoc($rs)) {  $res[] = ($r['cost3']/$st['cost3'])*$st['price'];}
ログイン後にコピー


 select a.order_id , (select (a.cost3/sum(cost3) * sum(price))  from od where order_id=a.order_id group by order_id) as price from od a;
ログイン後にコピー


上記の方法はすべて実用的です、ありがとうございます。

うーん、でもなぜ sum(price) を追加したのか ヒント: オペランドには 1 つの列が含まれている必要があります

SQL コード?123select a.order_id , (select (a.cost3/sum(cost3) * sum(price)), sum (price) from od where order_id=a.order_id group by order_id) as Price from od a; ヒント: オペランドを 1 つ追加しないのはなぜですか?

内部のサブクエリには 2 つのフィールドがあるため、そのように記述すると機能しません

うわー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート