2015-10-20 7 views
5

Ho una tabella mysql Vegetables con campi price e unit. L'unità può essere 1 o 2, significa chilogrammo (1) o tonnellata (2). È il peso unitario. Il prezzo dipende dal unità, in modo da price=200 con unit=1 è meno price=20 con unit=2, perché 1 tonnellata = 1000 kgCome eseguire una query sql che dipende dal campo nella riga?

D: Ho domanda come ... ORDER BY 'price' ACS. Come effettuare l'ordine tramite price che dipende dal campo unit della stessa tabella? Proprio nessuna idea di come farlo ..

di parole è come ... ORDER BY {if(this.unit==1):price;else:price*1000} ACS

Sto usando yii2 per questo progetto: Vegetable::find()->addOrderBy('price asc');

+0

pubblicare il tuo frammento di codice – Alex

risposta

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

o, 'Ordina per prezzo * POTENZA (1000, unità-1) ', Più alternativa conforme allo standard ANSI sarebbe' prezzo ORDER BY * CASE QUANDO unità = 1 THEN 1 ELSE 1000 END' – spencer7593

Problemi correlati