2015-10-20 21 views
5

price ve unit alanları ile birlikte mysql tablo Vegetables var. Birim 1 veya 2 olabilir, bu kilogram (1) veya ton (2) anlamına gelir. Birim ağırlığıdır. Fiyat birimine bağlıdır, bu nedenle SSatırdaki alana bağlı olarak sorgu nasıl?

1 ton = 1000 kg için unit=1 ile price=200, unit=2 ile daha az price=20: Ben ... ORDER BY 'price' ACS benzeri bir sorgu sahiptir. price ile aynı tablodaki unit alanına göre sipariş nasıl verilir? Sadece hiçbir fikri nasıl yapılacağını ..

kelime ben bu proje için yii2 kullanıyorum

... ORDER BY {if(this.unit==1):price;else:price*1000} ACS gibi öyle: fiyata TARAFINDAN

+0

Vegetable::find()->addOrderBy('price asc'); sonrası sizin kod parçası – Alex

cevap

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

ya, 'SİPARİŞ * GÜÇ (1000, ünite-1) ', daha ANSI standart uyumlu alternatif olacaktır 'SİPARİŞ FİYATI fiyat * VARSA birim = 1 DAHA 1 ELSE 1000 END' – spencer7593

İlgili konular