Php 具有两个日期约束的一对多查询

Php 具有两个日期约束的一对多查询,php,mysql,one-to-many,Php,Mysql,One To Many,我必须为一种版本控制系统编写一个报告查询,在这种系统中,我需要检索最新版本的基于日期的报告变体。简化的表格结构包括: items_register: ir_id (primary, auto inc), ir_name (varchar) items: i_id (primary, auto inc), i_register_id (int), i_version_name (varchar), i_datetime (datetime), i_date_expiry (datetime) i

我必须为一种版本控制系统编写一个报告查询,在这种系统中,我需要检索最新版本的基于日期的报告变体。简化的表格结构包括:

items_register: ir_id (primary, auto inc), ir_name (varchar)
items: i_id (primary, auto inc), i_register_id (int), i_version_name (varchar), i_datetime (datetime), i_date_expiry (datetime)
items_register中的每个条目都有多个关联版本,作为条目存储在items表中,i_datetime的最大值为最新版本

我想从items_注册表中检索条目,其中最新版本(item)的I_日期在请求的日期($f_日期)之后过期

我想我需要以某种方式加入表,按I_datetime对项目进行排序,将它们限制为1,以便获得最新版本,然后检查I_date_到期日是否在$f_date之后,如果是,则检索字段

我要检索的字段是items\u register.ir\u id、items\u register.ir\u name、items.I\u version\u name、items.I\u datetime

TIA需要任何帮助。

这可能有用吗? 这可能有用吗?

看起来您正在搜索“”模式。 对你的问题中仍然不清楚的事情做一些假设,我认为这可能是你要寻找的问题:

SELECT items_register.ir_id, items_register.ir_name, 
    items.i_version_name, items.i_datetime
FROM items_register
JOIN
(
    SELECT items.i_register_id, 
        MAX(items.i_datetime) AS most_recent_item_datetime
    FROM items
    WHERE items.i_date_expiry > '$f_date'
    GROUP BY items.i_register_id
) AS item_date ON item_date.i_register_id = items_register.ir_id
JOIN items ON items.i_register_id = items_register.ir_id 
    AND items.i_datetime = item_date.most_recent_item_datetime
请记住,这假设$f_date是一个符合中列出的日期时间和时间戳文本(而不是日期文本!)标准的字符串。

看起来您正在搜索“”模式。 对你的问题中仍然不清楚的事情做一些假设,我认为这可能是你要寻找的问题:

SELECT items_register.ir_id, items_register.ir_name, 
    items.i_version_name, items.i_datetime
FROM items_register
JOIN
(
    SELECT items.i_register_id, 
        MAX(items.i_datetime) AS most_recent_item_datetime
    FROM items
    WHERE items.i_date_expiry > '$f_date'
    GROUP BY items.i_register_id
) AS item_date ON item_date.i_register_id = items_register.ir_id
JOIN items ON items.i_register_id = items_register.ir_id 
    AND items.i_datetime = item_date.most_recent_item_datetime

请记住,这假设$f_date是一个符合中列出的日期时间和时间戳文本(而不是日期文本!)标准的字符串。

感谢thorny one,这似乎是我需要的。我目前没有足够的数据进行全面测试,但你的回答给了我一个“灯泡”时刻,我希望不管怎样。抱歉,我的问题有点混乱,我想我有点太接近了。我会在22小时内尽快给你奖金。谢谢你的奖金,很高兴我能帮上忙!多谢多刺的一个,这似乎正是我需要的。我目前没有足够的数据进行全面测试,但你的回答给了我一个“灯泡”时刻,我希望不管怎样。抱歉,我的问题有点混乱,我想我有点太接近了。我会在22小时内尽快给你奖金。谢谢你的奖金,很高兴我能帮上忙!