2015-10-20 5 views
5

フィールドpriceunitを持つmysqlテーブルVegetablesがあります。単位は1または2であり、キログラム()またはトン(2)を意味します。単位重量です。価格は、ユニットに依存するため、 Q行内のフィールドに依存するSQLクエリはどうですか?

1トン=千キロのでunit=1price=200は、unit=2と少ないしprice=20です:私は... ORDER BY 'price' ACSようなクエリを持っています。同じテーブルのunitフィールドに依存するpriceで注文するには? それを行う方法だけで全く分からない...

の言葉で、それは... ORDER BY {if(this.unit==1):price;else:price*1000} ACS

ように私はこのプロジェクトのためyii2を使用していますされていますVegetable::find()->addOrderBy('price asc');

+0

は価格で、あなたのコードの断片 – Alex

答えて

6
SELECT * 
FROM Vegetables 
ORDER BY IF(unit=1,price,price*1000) ACS 
+1

または、 'ORDERを投稿* POWER(1000、unit-1) '、ANSI標準に準拠した代替案は、 '注文時の価格*ケース単位= 1 THEN 1 ELSE 1000 END' – spencer7593

関連する問題