2
'즐겨 찾기'및 '트레일'이라는 두 개의 테이블이 있습니다. 사용자를위한 상위 10 개 즐겨 찾기를 보여주고 싶습니다. 나는 그들 사이에 '많은 관계를 맺었다. 그러나 나는 어떻게 질의를하는지 잘 모르겠습니다. 올바른 질의가 있어야합니다. 누군가가 나를 도와 주겠습니까.laravel 쿼리에서 상위 10 개 즐겨 찾기 트레일을 찾고 싶습니다.
'즐겨 찾기'및 '트레일'이라는 두 개의 테이블이 있습니다. 사용자를위한 상위 10 개 즐겨 찾기를 보여주고 싶습니다. 나는 그들 사이에 '많은 관계를 맺었다. 그러나 나는 어떻게 질의를하는지 잘 모르겠습니다. 올바른 질의가 있어야합니다. 누군가가 나를 도와 주겠습니까.laravel 쿼리에서 상위 10 개 즐겨 찾기 트레일을 찾고 싶습니다.
상단을 얻으려면 - 관계없이, 나는 this-
$favorites = DB::table('favorites')
->join('trails', 'trails.id', '=', 'favorites.trail_id')
->select('favorites.trail_id', 'trails.name')
->get();
같은 것을
먼저 하나가되는 '산책로'테이블과 또 다른 하나는 '즐겨 찾기'를 넣고있다 시도 10 개의 흔적을 사용하여 집계 함수를 사용하여 각 흔적의 사용자 수를 계산하고 계산 결과를 기반으로 결과를 정렬 한 다음 1
만 선택하면됩니다.$favorites = DB::table('trails as t')
->select('t.id', 't.name')
->join('favorites as f', 't.id', '=', 'f.trail_id')
->groupBy('t.id')
->groupBy('t.name')
->orderByRaw('COUNT(DISTINCT f.user_id) DESC')
->limit(10)
->get();
점점 쿼리 예외 –
SQLSTATE [42000] : 구문 오류 또는 액세스 위반 : 1055 'trailboard.t.name'이 GROUP BY에 없습니다 (SQL :'t'.'id','t' 선택). 'name'은'trails'에서't' inner join'f'를't''''''''''''''''''는't'''''''는 COUNT (DISTINCT f.user_id) DESC 제한 10) –
@ Md.RashedulHasan 나는 내 대답을 업데이트했습니다. 이름은 group by 절에 없었으며 5.7 또는'only_full_group_by' 모드가 활성화되어있을 수 있습니다. –