Php 通过内部联接从表中获取最大值,但不生成完全输出
这里我想根据Php 通过内部联接从表中获取最大值,但不生成完全输出,php,laravel,max,inner-join,Php,Laravel,Max,Inner Join,这里我想根据报告类型\u id从所有行中获取所有最大日期值 $latest_reports = Filelist::select(DB::raw('s1.*')) ->from('filelists as s1') ->where('s1.access_id','=',$retailer_supplier_id->id) ->j
报告类型\u id
从所有行中获取所有最大日期值
$latest_reports = Filelist::select(DB::raw('s1.*'))
->from('filelists as s1')
->where('s1.access_id','=',$retailer_supplier_id->id)
->join(DB::raw('(SELECT id,report_type_id,access_id,MAX(data_date) AS data_date FROM filelists GROUP BY report_type_id) as s2'),
function($query) use ($retailer_supplier_id) {
$query->on('s1.report_type_id', '=', 's2.report_type_id')
->on('s1.data_date', '=', 's2.data_date');
})
->orderBy('s1.data_date','desc')
->get();
id access_id filename report_type_id data_date
1 44 filename3 6 2021-04-01
2 44 filename4 6 2021-04-01
3 44 filename5 1 2021-01-01
4 44 filename6 1 2021-01-01
5 44 filename9 4 2021-04-01
6 44 filename10 4 2021-04-01
id access_id filename report_type_id data_date
1 44 filename3 6 2021-04-01
2 44 filename4 6 2021-04-01
3 44 filename9 4 2021-04-01
4 44 filename10 4 2021-04-01
这是我的表格文件列表
id access_id filename report_type_id data_date
1 44 filename1 6 2021-02-01
2 44 filename2 6 2021-01-01
3 44 filename3 6 2021-04-01
4 44 filename4 6 2021-04-01
5 44 filename5 1 2021-01-01
6 44 filename6 1 2021-01-01
7 44 filename7 4 2021-02-01
8 44 filename8 4 2021-01-01
9 44 filename9 4 2021-04-01
10 44 filename10 4 2021-04-01
我希望我的结果是这样的
$latest_reports = Filelist::select(DB::raw('s1.*'))
->from('filelists as s1')
->where('s1.access_id','=',$retailer_supplier_id->id)
->join(DB::raw('(SELECT id,report_type_id,access_id,MAX(data_date) AS data_date FROM filelists GROUP BY report_type_id) as s2'),
function($query) use ($retailer_supplier_id) {
$query->on('s1.report_type_id', '=', 's2.report_type_id')
->on('s1.data_date', '=', 's2.data_date');
})
->orderBy('s1.data_date','desc')
->get();
id access_id filename report_type_id data_date
1 44 filename3 6 2021-04-01
2 44 filename4 6 2021-04-01
3 44 filename5 1 2021-01-01
4 44 filename6 1 2021-01-01
5 44 filename9 4 2021-04-01
6 44 filename10 4 2021-04-01
id access_id filename report_type_id data_date
1 44 filename3 6 2021-04-01
2 44 filename4 6 2021-04-01
3 44 filename9 4 2021-04-01
4 44 filename10 4 2021-04-01
但我得到的结果是这样的
$latest_reports = Filelist::select(DB::raw('s1.*'))
->from('filelists as s1')
->where('s1.access_id','=',$retailer_supplier_id->id)
->join(DB::raw('(SELECT id,report_type_id,access_id,MAX(data_date) AS data_date FROM filelists GROUP BY report_type_id) as s2'),
function($query) use ($retailer_supplier_id) {
$query->on('s1.report_type_id', '=', 's2.report_type_id')
->on('s1.data_date', '=', 's2.data_date');
})
->orderBy('s1.data_date','desc')
->get();
id access_id filename report_type_id data_date
1 44 filename3 6 2021-04-01
2 44 filename4 6 2021-04-01
3 44 filename5 1 2021-01-01
4 44 filename6 1 2021-01-01
5 44 filename9 4 2021-04-01
6 44 filename10 4 2021-04-01
id access_id filename report_type_id data_date
1 44 filename3 6 2021-04-01
2 44 filename4 6 2021-04-01
3 44 filename9 4 2021-04-01
4 44 filename10 4 2021-04-01
问题是report\u-type\u-id
对于值6
和4
总共有4行,而report\u-type\u-id
对于值1
有2
行,所以我没有得到report\u-type\u-id
的1的值