2016-07-24 40 views
0

因此,我正在制定一個保修管理系統。在保修即將結束時通知您。Mysql從列表中選擇所有,並在另一個列表上按日期排序

我將保修存儲在名爲擔保的列表中,並且每個擔保續訂都在名爲warranty_entries的單獨表中。

warranties表只包含一個自動增量ID,產品名稱,公司,它由誰製作和創建日期。

warranty_entries表包含一個Auto_Increment ID,它所屬的保修標識,到期日期,開始日期,日期或創建以及其他一些字段。

我想從warranties中選擇*並在warranty_entries的最新條目的結束日期前排序。

因此,保證到期日是最新到期的保修條目的到期日。

我會再試一次再說一遍,因爲我也很困惑地​​描述這一點。 我想根據他們最近創建的條目的到期日期的有效日期來訂購所有保證。

我似乎無法解決我的問題,只能選擇表中的1個條目,並按該條目的有效日期對另一個表進行排序。

更新 - 表結構和所需的輸出

TABLE: warranties 
----------------------------------------------------------------- 
|  id  |  1  |  2  |  3  | 
|  name  | chick warranty | duck warranty | cat warranty | 
----------------------------------------------------------------- 

TABLE: warranty_entries 
---------------------------------------------------- 
|  id  | 1 | 2 | 3 | 4 | 5 | 
| warranty_id | 1 | 2 | 2 | 3 | 3 | 
| end_date | 2010 | 2005 | 2006 | 2010 | 2015 | 
| start_date | 2008 | 2001 | 2005 | 2008 | 2010 | 
---------------------------------------------------- 

我想在warranty_entries其相應條目的結束日期,選擇一切從擔保和訂購。由於有多個保修條目具有相同的warranty_id,我想使用最近的結束日期進行訂購。

所以查詢後,結果集將是這個樣子:

RESULT SET: 
----------------------- 
| id |  name  | 
| 3 | cat warranty | 
| 1 | chick warranty | 
| 2 | duck warranty | 
----------------------- 
+0

顯示您的表格結構和您期望的輸出結果 –

回答

0

你可以做一個子查詢,像這樣:

SELECT w.*, (SELECT end_date FROM warranty_entries we WHERE we.warranty_id = w.id ORDER BY end_date DESC LIMIT 1) AS end FROM warranties w ORDER BY end DESC

這應該做的招。根據需要更改表格和列的名稱。

+0

如何在特定日期內選擇條目?我不能在子查詢中添加between語句,因爲它不會總是選擇最新的。 –

+0

您將不得不在子查詢中添加這兩者之間的關係,並且它會在兩個日期之間選擇最新的一個。 – FMashiro

+0

但我只想從最近的日期中選擇,並檢查它是否在特定日期之間。就像檢查保修的到期日期是否在x和y之間一樣。因此,它不會從每次保修的最新條目中選擇。 –

相關問題