#php #laravel #max #inner-join
Вопрос:
Здесь я хочу получить все максимальные значения дат из всех строк в зависимости от report_type_id
so, чтобы получить, что я написал свой запрос следующим образом
$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();
Вот мой стол filelists
выглядит так
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
я хочу, чтобы мой результат был таким
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_type_id
в значениях 6
и 4
имеет всего 4 строки, а report_type_id
значение 1
имеет 2
строки, поэтому я не получаю значение из report_type_id
1
Комментарии:
1. Какие-нибудь идеи у кого-нибудь были