私には製品テーブルがあり、価格、通貨の2つのフィールドがあります。通貨フィールドに指定できる値は1,2,3です。 MDLは1、USDは2、EURは3です。私はmdl通貨で価格で私の製品を並べ替える必要があります。だから私は速度を持つ配列があります。私のクエリとデータベースフィールド値を配列キーとして使用する算術演算に依存するMYSQLソート関数
$v = array(1,11.38,15.8);
ヘルプしてください私を、私はこのような何かを試してみたが、私はエラーを持っている:
$results = $this->Product
->query("SELECT `id`,`price`,`currency` FROM products
ORDER BY price*$v[currency] DESC");
うーん...私は例を使って説明しようとします。
マイテーブル:
id|price|currency
_________________
1 | 500 | 2
2 | 300 | 3
それは、最初の製品の価格はUSDに保存され、第二の製品価格はEURに保存されていることを示しています。しかし、私はMDLのvaluteでそれらを並べ替える必要があります。だから私は、各値の割合の配列を取得: $rates = array([1] = > 1, [2] => 11.50, [3] => 15.50);
だから私は式の結果によって、私の製品を注文する必要があります:最初のケースでprice*value rate
:500*$rates['currency value from db, in our case 2] = 500 * 11.50
など事前に
感謝を。
私は配列のキーとしてフィールド名を使用しようとすると、私は、このクエリの構文エラーが発生します。 –
@АлександрЛазаревAaah - '$ v [currency]'の 'currency'は列の名前で、このインデックスは' $ v'配列に存在しません。もしそうなら、これを代わりに試してください: 'SELECT id、price、currency、price * currency AS ratio from FROM products ORDER BY ratio DESC'。 – shadyyx
うーん...私は例を説明しようとします。 私のテーブル: id | price | currency _________________ 1 | 500 | 2 2 | 300 | 3 これは、最初の製品価格がUSDで保存され、2番目の製品価格がEURで保存されていることを示しています。しかし、私はMDLのvaluteでそれらを並べ替える必要があります。だから私は各値のレートの配列を取得: $レート=配列([1] => 1、[2] => 11.50、[3] => 15.50); だから私の式の結果によって、私の製品を注文する必要があります。価格*値率 最初のケースで:500 * $速度[私たちのケース2におけるデシベルから「通貨の値、] = 500 * 11.50など –