【问题标题】:Laravel get most recent date of joined tableLaravel 获取连接表的最近日期
【发布时间】:2014-10-30 05:35:00
【问题描述】:

我正在使用 Laravel 的查询构建器执行此查询,其中两个表在列 s_nid 上进行了左连接。在我加入conference_report 的表格中,有很多行有一个s_nid,我只想取回最近日期的行。我一直在查看 Groupwise Maximum 以及 SO 上的一些示例,这对我来说是新的,我认为这是完成查询所需的,但我不确定如何在我加入的表上实现它。

$data['students'] = DB::table('educational_report')
        ->select('educational_report.s_nid as s_nid'
                ,'educational_report.name as name'
                ,'educational_report.file_no as file_no'
                ,'educational_report.university as university'
                ,'conference_report.conference_end_date as conference_end_date'
                ,'student_status.status as status')
        ->leftJoin('student_status', 'student_status.s_nid', '=', 'educational_report.s_nid')
        ->leftJoin('conference_report', 'conference_report.s_nid', '=', 'educational_report.s_nid')
        ->distinct()
        ->groupBy('s_nid')
        ->paginate(10);

可能有用的链接:

Performing a Groupwise Maximum in Laravel 4

Groupwise maximum

http://dev.mysql.com/doc/refman/5.6/en/example-maximum-column-group-row.html

【问题讨论】:

    标签: php mysql sql laravel groupwise-maximum


    【解决方案1】:

    我认为我没有必要把事情复杂化。我设法在连接上使用嵌套查询来解决它:

    $data['students'] = DB::table('educational_report')
            ->select('educational_report.s_nid as s_nid'
                    ,'educational_report.name as name'
                    ,'educational_report.file_no as file_no'
                    ,'educational_report.university as university'
                    ,'cr2.conference_end_date as conference_end_date'
                    ,'student_status.status as status')
            ->leftJoin('student_status', 'student_status.s_nid', '=', 'educational_report.s_nid')
            ->leftJoin(DB::raw('(select s_nid, MAX(conference_end_date) conference_end_date
                                    from conference_report GROUP BY s_nid) as cr2'), function ($join) {
                                        $join->on ( 'cr2.s_nid', '=', 'educational_report.s_nid' );
                        })
            ->paginate(10);
    

    它似乎工作正常,但我渴望任何可能纠正我正在做的事情或提供更好的做事方式的答案。谢谢:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      相关资源
      最近更新 更多