2016-12-21 4 views
0

Ich habe zwei Spalten in einer Tabelle mit den Namen saleprice und regularprice. Diese Tabelle enthält Datensätze für Auflistungen für eine Auktions-Website. Wenn der Benutzer entscheidet, kann er entweder eine saleprice, die niedriger ist als die regularprice ODER sie können einfach in eine regularprice setzen und lassen Sie die saleprice leer.SORTIEREN NACH 2 Felder, wenn man nicht leer ist andere weise nach anderen Feld in Mysql

Ich habe eine select gebaut, die es dem Benutzer ermöglicht, die Datensätze von niedrig zu hoch oder hoch zu niedrig basierend auf dem Preis anzuzeigen. Problem ist, wenn es ein regularprice gibt, dann ist das Feld saleprice leer. Wenn es eine saleprice gibt, dann enthalten die Felder regularprice und saleprice einen Wert und natürlich wird saleprice niedriger sein.

Ich versuche, die Datensätze basierend auf dem, was der Benutzer wählt, aber ich kann nicht meine Anweisung, um die Datensätze ordnungsgemäß suchen beide Spalten zurückgeben.

Grundsätzlich muss ich nach sortieren, wenn saleprice dann regularprice nicht leer verwenden sonst verwenden nur regularprice

Hier sind meine Beispiele Ich habe weit

aufsteigend

SELECT * FROM market_posts 
WHERE live = 1 AND category = '1' 
ORDER BY IF(saleprice != '',saleprice,regularprice) ASC 
so kommen

Hoch zu niedrig

SELECT * FROM market_posts 
WHERE live = 1 AND category = '1' 
ORDER BY IF(saleprice != '',saleprice,regularprice) DESC 
+1

'IF (Saleprice IS NOT NULL, Saleprice, regularprice)'? –

+0

Dies kann in Abhängigkeit von "Was der Benutzer wählt" auf verschiedene Arten durchgeführt werden. Sie können sich genauer darüber informieren, was der Benutzer wählt oder welche Optionen er wählt. Ansonsten sind die Antworten, die Sie hier erhalten, die beste Schätzung – apesa

Antwort

2

Wenn Ihr saleprice ist NULL, wenn es nicht gesetzt ist, dann COALESCE verwenden:

SELECT * 
FROM market_posts 
WHERE live = 1 AND category = '1' 
ORDER BY COALESCE(saleprice, regularprice) ASC -- OR DESC 
Verwandte Themen