所以我正在建立一个保修管理系统。保修期即将结束时让您知道的事情。
我将保修条款存放在名为“保修单”的清单中,并将每个保修期更新保存在一个名为warranty_entries的单独表格中。
warranties
表仅包含自动增量ID,产品名称,公司,制作者以及创建日期。
warranty_entries
表包含Auto_Increment ID,其所属保修的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_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
这应该可以解决问题。根据需要更改表和列的名称。