2012-04-03 3 views
2

Verwenden Sie PHP und Mysql.
Felder in meinem Tisch (Produkt) sind id, full_price, sell_price usw.Wie SELECT Produkt und sortieren nach Rabatt DESC (PHP, Mysql)

Wie kann ich Produkte ORDER BY Rabatt DESC SELECT, wo Rabatt = (full_price-sell_price) * 100/full_price? Ich versuche, dies zu verwenden, aber es funktioniert nicht:

SELECT * 
    FROM product 
    WHERE full_price > 0 
ORDER BY (discount = (full_price - sell_price) * 100/full_price) 
    LIMIT 10 
+1

+1 für die Entsendung was Sie versucht. Es würde helfen, wenn Sie Ihre Frage mit der 'CREATE TABLE'-Anweisung für Ihre' product' Tabelle aktualisieren würden. –

Antwort

3

Wenn Sie den Rabatt sein, eine Spalte in der auch festgelegt Ergebnis wollen, tun Sie es wie folgt aus:

SELECT *, (full_price - sell_price) * 100/full_price AS discount 
FROM product 
WHERE full_price > 0 
ORDER BY discount DESC 
+0

Danke Wyzard. –

+0

Welcher ist schneller zwischen Wyzards Lösung und Amit Bhargavas Lösung? –

+0

Sie sind verschiedene Arten, dasselbe zu schreiben; Sie sollten das Gleiche tun. Diese Version sendet jedoch den Rabattwert als Teil der Ergebnismenge zurück, was bedeutet, dass etwas mehr Daten übertragen werden. Wenn es sich um eine sehr große Ergebnismenge handelt und der Datenbankserver auf einem anderen Computer ausgeführt wird, könnte die Netzwerkbandbreite ein Problem darstellen. – Wyzard

3

Habe dies nicht versucht. Aber bitte versuchen Sie es

SELECT * FROM product 
WHERE full_price>0 
ORDER BY (full_price-sell_price)*100/full_price LIMIT 10 
+0

Großartig! Es ist Arbeit. Danke Amit Bhargava. –

+0

Gern geschehen! –