2016-11-18 74 views
0

我的數據庫中的每個定製者都有一個自己的行。
對於每位客戶,我保存了他購買的產品以及何時需要新產品。
但有時客戶有更多的產品,如2-3。某些行的
例子:
通過連續更多日期排序最早的日期

id | customername | product1 | dateneednew1 | product2 |dateneednew2 
1. | Jacob ....... | a product| 2017-11-18 ... | a product| 2016-12-01 
2. | Anna ........ | a product| 2016-12-10 ....| a product| 2017-10-10 
2. | Peter ....... | a product| 2016-12-05 ... | a product| 2017-08-10 

現在,我想所有「dateneednew1」的最早日期順序 - 「dateneednew2」 ......,所以這個例子雅各是第一,第二彼得和安娜最後。

+6

設計不佳的數據庫....正規化您的表格 –

+1

您可以輕鬆地在您的SQL中添加'ORDER BY date ASC'。 ;-) –

+2

您可以爲每個用戶和每個銷售單獨一行!它使創建腳本變得更容易! – Soheyl

回答

0

ORDER BY -

least(dateneednew1,dateneednew2) 

如果列可以包含NULL -

least(coalesce(dateneednew1,'3000-01-01'),coalesce(dateneednew2,'3000-01-01')) 

如果列可以包含 '0000-00-00' 作爲默認的日期(糟糕的設計) -

least(coalesce(nullif(dateneednew1,'0000-00-00'),'3000-01-01'),coalesce(nullif(dateneednew2,'0000-00-00'),'3000-01-01')) 
+0

是的,我有空=),嗯它沒有工作,可能是我的錯誤。 – delato468

+0

由於NULLS它不起作用; D。 – delato468

+0

@ delato468現在顯示錯誤是什麼? –

0

您可以使用LEAST()

使用兩個或更多參數,返回最小(最小值)參數。

select *from customor order by least(dateneednew1,dateneednew2) asc; 
+0

@ delato468你現在的錯誤是什麼? –