【问题标题】:Mysql select all from list and order by date on another listMysql从列表中选择所有并在另一个列表中按日期排序
【发布时间】:2016-11-27 19:06:45
【问题描述】:

所以我正在制作一个保修管理系统。在保修即将结束时通知您。

我将保修存储在一个名为保修的列表中,每次保修更新都存储在一个名为warranty_entries 的单独表中。

warranties 表仅包含自动增量 ID、产品名称、公司、制作者和创建日期。

warranty_entries 表包含一个 Auto_Increment ID、它所属的保修 ID、到期日期、开始日期、日期或创建日期以及一些其他字段。

我正在尝试从 warranties 中选择 * 并在 warranty_entries 中的最新条目的结束日期之前对它们进行排序。

因此,保修到期日期是最近到期的保修条目的到期日期。

我会尝试再改一次,因为我也对描述这一点感到困惑。 我想在最近创建的条目的到期日期之前订购所有保修。

我似乎无法解决如何只选择表中的一个条目并按该条目到期日期对另一个表进行排序。

更新 - 表结构和所需输出

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  |
-----------------------

【问题讨论】:

  • 显示你的表结构和你期望的输出

标签: mysql subquery


【解决方案1】:

您可以在子查询中执行此操作,如下所示:

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

这应该可以解决问题。根据需要更改表和列的名称。

【讨论】:

  • 您将如何选择某个日期内的条目。我不能在子查询中添加 between 语句,因为它不会总是选择最新的。
  • 您必须在子查询中添加中间值,它将选择两个日期之间的最新日期。
  • 但我只想从最近的日期中挑选并检查它是否在某些日期之间。就像检查保修的到期日期是否在 x 和 y 之间。因此,它永远不会从每个保修的非最新条目中进行选择。
  • 如果您想要这样的检查,请使用我的查询并使用您的处理语言(如 php)进行检查,因为这种逻辑在 sql 中会变得一团糟,并且会慢很多
猜你喜欢
  • 1970-01-01
  • 2011-03-30
  • 2021-12-30
  • 2017-11-13
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 2016-07-22
  • 2017-06-21
相关资源
最近更新 更多