Получение максимальных значений из таблицы через внутреннее соединение не дает полного вывода

#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. Какие-нибудь идеи у кого-нибудь были