2016-08-25 10 views
-2

私はmysqlからデータを選択する際に1つの問題に直面しています。研究はしますが、運がないようにしてください。Mysql - 2つの価格列を1つに選択して注文する

私は4列を持つテーブルがあります。

id | name | price | discount_price 
1 | Test 1 | 150 | 50 
4 | test 2 | 130 | 300 
2 | test 3 | 200 | 0 
3 | test 4 | 130 | 10 
4 | test 5 | 80 | 0 

をそして私は、データを選択し、価格でとdiscount_priceがprice_discountによって順序よりも、「ZERO」でない場合は、それらを注文する必要があります。問題は、今は期待どおりに動作していないということです。最初の列がソートされ、最後に2番目の列がソートされた結果が表示されます。私がASCかDESCを選ぶかによって異なります。

私はこの2つの列を1つに並べ替えるような何かを達成する必要があります。このように:

id | name | price | discount_price 
3 | test 4 | 130 | 10* 
4 | test 5 | 80* | 0 
1 | Test 1 | 150 | 50* 
2 | test 3 | 200* | 0 
4 | test 2 | 130 | 300* 

mysqlでも可能ですか?または後でphpでこれをソートする必要がありますか?助けてくれてありがとう。

+0

10,80,50,200,300は(少なくとも私には)あまり意味がありません。 – Vatev

+1

同じ質問私はあなたが不必要な並べ替えを行う方法を持っています。 10,80,50,200,300。これも私には意味がありません。 10,50,80,200,300が必要な場合。 'id、name、price、discount_price、if(discount_price = 0、price、discount_price)as sort_order as sort_order ASC order by sort_order ASC' – Manish

+0

これは昨日誰にも聞かなかったのですか?あなたの要件をundestoodして質問が削除されました – RiggsFolly

答えて

0

は(表作成におけるフィールド定義は擬似コードです)、これを試してみてください:

CREATE TEMPORARY TABLE sort (id INT, name VARCHAR, INT price, INT discount_price, INT actual_price) ; 
INSERT INTO sort (id, name, price, discount_price) 
    SELECT id, name, price, discount_price 
    FROM original_table ; 
UPDATE sort SET actual_price = price WHERE discount_price = 0 ; 
UPDATE sort SET actual_price = discount_price WHERE discount_price != 0 ; 
SELECT id, name, price, discount_price FROM sort ORDER BY actual_price ; 
関連する問題