首页 > 解决方案 > 如何创建与另一个表的最后一条记录的关联

问题描述

我正在使用 cakephp 为 iceskaters 开发一个应用程序。我的数据库 shema 的一部分是这样的:

数据库shema

国家-(1,n)-滑冰者-(1,n)-参与-(n,1)-比赛

Participations 有一个 rank 字段, Competitions 有一个 date 字段

根据比赛表中的日期字段,我想有一个从 Skaters 到最后一个 Participation(这个滑冰者)的 hasOne 关联。我需要在模型中使用它,因为我想按最后一次参与或最后一次参与期间获得的排名来订购溜冰者。

我不知道 cakephp v3.x 是否可行

在 MySQL 中,我编写了一个似乎有效的查询:

Select s.id, c.title, c.date, p.id, p.rank 
from
(
    SELECT skater_id, max(competitions.date) as maxdate 
    FROM `participations`
    inner join competitions on competitions.id = participations.competition_id
    group by skater_id
) as x
inner join participations as p on p.skater_id = x.skater_id
inner join competitions as c on c.id = p.competition_id
inner join skaters as s on x.skater_id = s.id and maxdate = c.date  

我找到了一个非常有用的帖子,但我无法根据我的情况调整它(第三个表中的过滤字段不是第二个)。唯一的结果是:发生内部服务器错误。对我来说,在没有信息的情况下调试太难了。

问候

标签: cakephpassociationscakephp-3.0

解决方案


推荐阅读