У меня есть SQL-запрос для реализации в Laravel. Мой запрос:Laravel Query Builder - Получить результат таблицы `as`
SELECT * FROM officer_ranks ra
LEFT JOIN (SELECT * FROM officer_rank_details WHERE void = 0) AS r ON ra.rank = r.present_rank
LEFT JOIN officer_languages l ON r.officer_id = l.officer_id
GROUP BY(ra.rank)
ORDER BY ra.id ASC;
Для реализации этого запроса я написал:
DB::table('officer_ranks as ra')
->leftJoin(DB::raw('SELECT * FROM officer_rank_details WHERE void = 0'), 'ra.rank', '=', 'present_rank')
->leftJoin('officer_languages as l', 'officer_id', '=', 'l.officer_id')
->groupBy('ra.rank')
->get();
Мой вопрос заключается в том, как я могу получить (DB::raw(...))
таблицу результатов, как именования r
Поскольку мне нужно JOIN
таблиц.
Я попытался с помощью
leftJoin(DB::raw('SELECT * FROM officer_rank_details WHERE void = 0') as r, 'ra.rank', '=', 'present_rank')
Но это не удалось.
'leftJoin (DB :: raw ('(SELECT * FROM officer_rank_details WHERE void = 0) как r'), 'ra.rank', '=', 'r.present_rank')'. Но исходный запрос - не лучший способ сделать это. Вы должны переместить 'void = 0' ito предложение ON. И почему вы используете 'GROUP BY' без какой-либо совокупной функции? –
Я думаю, что это сработает. Я использую функцию 'SUM()' для получения некоторого количества. Я не писал об этом здесь, потому что слишком долго –