Как работать с group by и присоединяться, используя sql или eloquent? - PullRequest
1 голос
/ 20 апреля 2020

У меня есть 5 столов, объединенных вместе. Теперь я хочу получить sql или красноречивый запрос, в котором я получу результат в группе по.

Запрос, который я пробовал -

SELECT f.name AS formName, u.fname, u.lname, p.id AS pageId, 
       p.name, s.heading, count(r.response) AS response 
FROM `form_response` AS r 
LEFT JOIN `forms` AS f ON f.id = r.formId 
LEFT JOIN `users` AS u ON u.id = r.adminId 
LEFT JOIN `page_section` AS s ON s.id = r.sectionId 
LEFT JOIN `page` As p ON p.id = r.pageId 
WHERE r.adminId = '.Auth::user()->id.' 
GROUP BY s.id

Здесь, forms, users, page таблиц имеет много к одному связь с form_response таблицей. И page_section имеет отношение один к одному с form_response. Теперь я хочу, чтобы количество ответов группировалось по разделам.

Заранее спасибо.

1 Ответ

0 голосов
/ 20 апреля 2020

Вы должны включить все в свой оператор SELECT в свой GROUP BY при выполнении функции агрегирования count(r.response).

Я думаю, что вы можете получить то, что хотите, используя оконную функцию:

SELECT DISTINCT f.name AS formName, u.fname, u.lname, p.id AS pageId, 
       p.name, s.heading, s.id, count(r.response) OVER (ORDER BY r.sectionId) AS response 
FROM `form_response` AS r 
LEFT JOIN `forms` AS f ON f.id = r.formId 
LEFT JOIN `users` AS u ON u.id = r.adminId 
LEFT JOIN `page_section` AS s ON s.id = r.sectionId 
LEFT JOIN `page` As p ON p.id = r.pageId 
WHERE r.adminId = '.Auth::user()->id.' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...