Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
С трудом составил большой сложный запрос с объединением четырех таблиц. Запрос 100% рабочий, но возникла проблема его записи в модели. Прошу помощи.
SELECT
u.name name,
u.created_at created_at,
q1.cPosts cposts,
q1.sPosts sposts,
q2.cComments ccomments,
q2.sComments scomments,
q3.cComplaints ccomplaints
FROM
(users u LEFT JOIN
(SELECT
p.user_id,
count(p.id) AS cPosts,
sum(p.raiting) AS sPosts
FROM posts p
GROUP BY p.user_id) AS q1
ON u.id = q1.user_id) LEFT JOIN
(SELECT
c.user_id,
count(c.id) AS cComments,
sum(c.raiting) AS sComments
FROM post_comments c
GROUP BY c.user_id) AS q2
ON u.id = q2.user_id LEFT JOIN
(SELECT
com.compl_user_id,
count(com.id) AS cComplaints
FROM complaints com
WHERE com.status = 1
GROUP BY com.compl_user_id) AS q3
ON u.id = q3.compl_user_id
GROUP BY u.name, q1.cPosts, q2.cComments, q1.sPosts, q2.sComments, q3.cComplaints
ORDER BY u.name asc
Не в сети
Окей, можно и без группировки, но вопрос был не в этом
http://laravel.com/docs/5.0/queries
опирайся на это, но запрос тебе лучше доработать
Не в сети
Изучал. Там нет ни слова про подзапросы в join.
Переписал запрос. теперь он проще и наглядней для восприятия. Но вопрос остается открытым. Интересует реализация вложенных запросов в SELECT.
select u.name,
(select count(p.id)
from posts p
where u.id = p.user_id) as q1,
(select sum(p.raiting)
from posts p
where u.id = p.user_id) as q2,
(select count(c.id)
from post_comments c
where u.id = c.user_id) as q3,
(select sum(c.raiting)
from post_comments c
where u.id = c.user_id) as q4,
(select count(cmpl.id)
from complaints cmpl
where u.id = cmpl.compl_user_id and
cmpl.status = 1) as q4
from users u
А как по мне никто не мешает тебе писать подзапрос в сам джоин...
return $this->select('....')
->leftJoin('(SELECT * ...)', '', '=', '');
А вообще по идее через замыкание можно
Страницы 1