Php 查询以显示基于最新日期的最新值

Php 查询以显示基于最新日期的最新值,php,mysql,Php,Mysql,我正在创建一个学校项目,在这个项目中,我需要根据成员的贷款交易来监控成员的可用性 现在的问题是,当一个成员已经进行了大量的交易时,我现有的查询将显示所有的交易,我只希望根据他们请求的最新交易日期显示当前状态 我将提供该问题的屏幕截图,以便进行更多的可视化 这是我目前的查询: $query = $this->db->query(" SELECT * FROM `tbl_members` LEFT JOIN tbl_loanrequests on tbl_mem

我正在创建一个学校项目,在这个项目中,我需要根据成员的贷款交易来监控成员的可用性

现在的问题是,当一个成员已经进行了大量的交易时,我现有的查询将显示所有的交易,我只希望根据他们请求的最新交易日期显示当前状态

我将提供该问题的屏幕截图,以便进行更多的可视化

这是我目前的查询:

$query = $this->db->query("
  SELECT * FROM `tbl_members` 
  LEFT JOIN tbl_loanrequests 
  on tbl_members.member_id = tbl_loanrequests.member_id
");
以下是有用的信息:

CREATE TABLE `tbl_members` (
  `member_id` int(11) NOT NULL,
  `firstname` varchar(250) NOT NULL,
  `lastname` varchar(250) NOT NULL,
  `middlename` varchar(250) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `tbl_members` (`member_id`, `firstname`, `lastname`, `middlename`) VALUES
(1,  'Maribeth', 'Cunha', ''),
(2,  'Thelma ', 'Rush  ', ''),
(3,  'Latoria ', 'Shinn', ''),
(4,  'Quinton ', 'Everman', ''),
(5, 'Robert', 'Evermen', '');

CREATE TABLE `tbl_loanrequests` (
  `loanreq_id` int(11) NOT NULL,
  `member_id` int(11) NOT NULL,
  `loanreq_status` varchar(50) NOT NULL,
  `date_requested` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `tbl_loanrequests` (`loanreq_id`, `member_id`, `loanreq_status`, `date_requested`) VALUES
(2, 1, 'Paid', '2021-05-06'),
(3, 2, 'For Release', '2021-05-06'),
(4, 3, 'Pending', '2021-05-06'),
(5, 5, 'Ongoing', '2021-05-06'),
(6, 1, 'Cancelled', '2021-05-07');

这是一个预览,其中
成员id
#1应仅显示一个状态,即
已取消
,因为它获得了请求的最新
日期
。在左侧,它显示了
Clear
,但这是我监控会员是否能够申请贷款的一种方式。

我认为您的
loanreq\u id
是递增的,因此每个成员的最高loanreq\u id始终包含该成员的最高loanreq日期。如果没有,我可以适应

诀窍是使用MAX…GROUP来确定每个成员的最高loanreq_id,方法是:

SELECT member_id, MAX(loanreq_id) AS last_loanreq_id
FROM tbl_loanrequests
GROUP BY member_id
然后,您应该加入此查询的结果,以仅保留每个成员的最新loanreq。您的查询变成:

SELECT m.*, l.*
FROM `tbl_members` m
LEFT JOIN
    (
    SELECT member_id, MAX(loanreq_id) AS last_loanreq_id
    FROM tbl_loanrequests
    GROUP BY member_id
    ) lm ON lm.member_id = m.member_id 
LEFT JOIN tbl_loanrequests l on l.loanreq_id = lm.last_loanreq_id

您是否可以使用现有的DDL脚本来设置sql FIDLE,这将很容易获得帮助。@HarshGundecha谢谢。我刚刚发现了SQLFiddle,我将在以后的问题中使用它。此外,我更新了我的帖子,并放置了一个sql提琴供其他人参考@FaNo_FN是的,的确如此。非常感谢。