2016-08-24 75 views
2

在我的SQL查詢PHP的MySQL複雜的順序按

SELECT unit_price,price_counter FROM products

其結果顯示在表中。該表的最後一列被命名爲「價格與計數器的百分比」。在PHP該列的公式如下:

$PercentCompare = round((float)(($UnitPrice-$PriceCounter)/$UnitPrice) * 100);

現在的客戶端請求,該表是基於最後一列進行排序。如果該列也是我的products表中的字段或列,我可以輕鬆地執行ORDER BY,但該列僅在使用上述公式後纔會顯示在網頁表格中。

問題是,如果該列是計算/公式的結果,如何排序或使用ORDER BY?我正在使用準備好的聲明。我能做:

SELECT unit_price,price_counter FROM products ORDER BY round((float)((unit_price-price_counter)/unit_price) * 100)

編輯第2次嘗試:

$InsertCalculation = ", round((float)((unit_price - price_counter)/unit_price) * 100) AS percentagecounter"; 
$QueryOrderBy = "perc_list_count"; 
$MyQuery = "SELECT itemid, address, city, state, zipcode, county, nameofowner, unit_price, price_counter, status" . $InsertCalculation . " FROM products WHERE itemid LIKE ? AND address LIKE ? AND city LIKE ? AND state LIKE ? AND zipcode LIKE ? AND county LIKE ? ORDER BY " . $QueryOrderBy . " ASC"; 
+0

嘗試'選擇UNIT_PRICE,price_counter,圓((浮動)((UNIT_PRICE-price_counter)/ UNIT_PRICE)* 100)percentCompare FROM products ORDER BY percentCompare'? – DVJex

+0

糟糕。沒有:( – jay

回答

0

可以計算,然後下單。像這樣

SELECT unit_price,price_counter, 
    ROUND(((unit_price-price_counter)/unit_price) * 100) as percentage_price 
FROM products 
ORDER BY percentage_price ASC 

在這裏,你可以計算percentage_price,然後使其以通過

+0

你也應該添加一輪()) – scaisEdge

+0

@scaisEdge,謝謝你的觀點,我編輯了我的答案 – keviveks

+0

這似乎並不奏效,它使得結果表變爲空白:(我編輯了上面的帖子告訴你我有什麼 – jay