2012-04-11 4 views
4

ich die folgende Abfrage in der Datenbank verwenden,MySQL Abfrage Datensätze zu zeigen, mit dem aktuellen Datum auf und andere als pro absteigender Reihenfolge

SELECT b.sales_id,b.category_id,b.sale_starts,b.sale_ends 
FROM tbl_sales b WHERE b.active=1 
UNION 
SELECT b.sales_id,b.category_id,b.sale_starts,b.sale_ends 
FROM tbl_sales b INNER JOIN tb_category c ON b.category_id=c.cat_id 
WHERE c.cat_keyword LIKE 'a' ORDER BY sale_ends DESC 

und immer das Ergebnis wie folgt

sales_id | category_id   |sale_starts | sale_ends 
----------|---------------------|------------|-------------- 
1  | 10    | 2012-03-31 | 2012-04-30  
2  | 11    | 2012-03-22 | 2012-04-27 
3  | 25    | 2012-03-31 | 2012-04-25 
4  | 12    | 2012-04-05 | 2012-04-11 

Jetzt muss ich das Ergebnis wie folgt erhalten, dh die Zeile, die today's date/current date as sale_ends hat, muss oben in der Reihenfolge (unter der Annahme, dass das heutige Datum/aktuelle Datum 2012-04-11 ist), wie unten gezeigt,

angezeigt werden 210
sales_id  | category_id   |sale_starts | sale_ends 
    ----------|---------------------|------------|-------------- 
    4  | 12    | 2012-04-05 | 2012-04-11 (today's date) 
    1  | 10    | 2012-03-31 | 2012-04-30  
    2  | 11    | 2012-03-22 | 2012-04-27 
    3  | 25    | 2012-03-31 | 2012-04-25 

Brauchen Sie Hilfe in diesem, danke im Voraus.

Antwort

5

Versuchen Sie, diese ORDER BY-Klausel mit Bedingung -

ORDER BY IF(sale_ends = DATE(NOW()), 0, 1), sale_ends DESC 
+1

dank viel, dass funktioniert gut.. –

3

Sie können die ganze Sache in einem anderen SELECT wickeln und verwenden ORDER BY

SELECT * FROM (  
    SELECT b.sales_id,b.category_id,b.sale_starts,b.sale_ends 
    FROM tbl_sales b WHERE b.active=1 
    UNION 
    SELECT b.sales_id,b.category_id,b.sale_starts,b.sale_ends 
    FROM tbl_sales b INNER JOIN tb_category c ON b.category_id=c.cat_id 
    WHERE c.cat_keyword LIKE 'a' ORDER BY sale_ends DESC 
) AS all_sales 
ORDER BY (sale_ends=CURDATE()) DESC, sale_ends DESC 
+0

dies zu fein gearbeitet, dank –

Verwandte Themen