2011-06-18 12 views
2

私はこの特定の問題を解決しようとしていますが、私は簡単に一種の力強いPHP + MySQLソリューションを考えることができますが、 PHPでフィールドを反復処理します。MySQLのヘルプ、計算に基づいてフィールドを更新する

だから、ここに問題があります。 他のすべての部屋と比較して、各部屋のサイズを1つのクエリ(または3)で事前に計算して、他のすべての部屋の66%を超える部屋にはカテゴリをLargeとして記入することができます。 -66%の範囲はMedium、残りはSmallとします。

私はこれをどのように完了するのかという一般的な考え方を持っていますが、私はSQLクエリとしてもっと熟達した人が少なくとも私を正しい方向に向けることができると期待しています。

私にとって最も難しい部分は、同時に一定の範囲:(内に入るの基準を満たすすべてのフィールドを更新することができることが付属しています。

ここで私は「テーブル

Rooms 
    ID | Length | Width | Relative Size [Expected Values] 
    ------------------------------------ 
    1 | 15  | 12 | Large 
    2 | 15  | 12 | Large 
    3 | 10  | 10 | Medium 
    4 | 10  | 10 | Medium 
    5 | 8  | 9  | Small 
    6 | 8  | 8  | Small 
    7 | 8  | 7  | Small 
    8 | 10  | 9  | Medium 

の例ですこれで私を支援することができますリソースや手がかりと完全に満足してD、私はサークルで行くされてきた。すべての試みのため

おかげで私を助けに。

編集:私は標準偏差アプローチを行った。この場合はもっと意味があるので、答えとして投稿する。

+1

を投入する前に、ヌルであると仮定すると、1つのクエリでそれを行うための方法を考えるが、ここ3でそれを行うには、私の試みですcouldntの指定されたサイズより大きくても小さくてもかまいませんが、見つかった最大サイズと最小サイズに対するサイズに基づいています。 15×10の2部屋、10×9の部屋12部屋、8×8の部屋3部屋があった場合、あなたの方法で割り当てた場合、間違ったカテゴリが割り当てられてしまいます。 –

+0

本当に、この方法は私の上司から私に提案されました。私は間違いなく実際の欠陥のある影響を考え出すのではなく、彼の方法を働かせることにもっと関心を持っていました... – Anther

答えて

1

私はどのように多くの部屋に基づいて部屋を分類しませんサイズは

Update table set size = 'Large' where ID in (select TOP 33 PERCENT ID from table order by length*width Desc) 

Update table set size = 'Small' where ID in (select TOP 33 PERCENT ID from table order by length*width Asc) 

Update table set size = 'Medium' where size = null 
+0

私はこの回答が大好きです。実際にそれをMySQL表記に変換する作業をしています。私はサブクエリにはまったく新しいので少し時間がかかるかもしれませんが、誰も私にそれを打つことができなければ、私はあなたの答えをMySQLソリューションで更新しようとします(あなたは正規のSQLでしか動作しません)。 – Anther

関連する問題