#mysql #sql #laravel #join
#mysql #sql #laravel #Присоединиться
Вопрос:
Я знаю, что могу использовать with () в eloquent, но мне нужно запускать только по запросу.
пожалуйста, помогите мне, как объединить две или более таблицы с одной таблицей.
Я использую laratables и пытаюсь показать количество лайков.
Я пытаюсь это создать, но возникает проблема: (
$roles = DB::table('table0')
->leftJoin('table1', 'table0.id', '=', 'table1.table_id')
->leftJoin('table2', 'table0.id', '=', 'table2.table_id')
->select('table0.id', DB::raw('COUNT(table1.id) as table1_count, COUNT(table2.id) as table2_count'))
->groupBy('table0.id');
для получения более подробной информации о моей проблеме, а также о моем желании, вы можете увидеть эту картинку ниже.
Комментарии:
1. отвечает ли это на ваш вопрос? — kirschbaumdevelopment.com/news-articles /…
2. Подсчет количества при использовании нескольких соединений дает неправильные результаты из-за «умножения соединения». Используйте
COUNT(DISTINCT tableN.id)
по крайней мере (если количество строк в таблице велико, то этот метод будет слишком дорогим, вместо этого используйте подсчет подзапросов)..3. Спасибо, Акина. Да, моя проблема в том, что не используется DISTINCT.