#symfony #query-builder
#symfony #конструктор запросов
Вопрос:
Я пытаюсь преобразовать sql-запрос в querybuilder.
SELECT c.id, SUM(a.view_count), dt
FROM project_content c
JOIN project_content_analytic a ON a.content_id = c.id
RIGHT JOIN (SELECT c.id, DATE_FORMAT(a.created_at, '%d-%m-%Y') dt, MAX(a.created_at) max_date
FROM project_content c
JOIN project_content_analytic a ON a.content_id = c.id
GROUP BY dt, c.id) x
ON x.max_date = a.created_at and x.id = c.id
GROUP BY dt
ORDER BY `x`.`dt` ASC
Я пытался:
$qb->select('c.id')
->addSelect('COALESCE(SUM(a.viewCount),0) as viewCount')
->addSelect('DATE_FORMAT(a.createdAt, '%d-%m-%Y') as date')
->innerJoin('c.analytics', 'a')
->groupBy('c.id')
->addGroupBy('date')
->orderBy('a.createdAt', 'DESC');
Подзапрос:
$sub->select('cc.id')
->addSelect('MAX(aa.created_at) as maxDate')
->addSelect('DATE_FORMAT(aa.createdAt, '%d-%m-%Y') as ddate')
$sub->innerJoin('cc.analytics', 'aa')
->addGroupBy('ddate')
->orderBy('aa.createdAt', 'DESC');
Но я не знаю, как объединить запросы.
Спасибо за вашу помощь.
Комментарии:
1. Есть ли у Symfony
outerJoin
?2. @RobertHarvey Привет и спасибо за ваш ответ, мы оставили join на symfony.
3. Левое соединение — это просто правое соединение с заменой объединенных таблиц / запросов.
4. @RobertHarvey да. я проверяю stackoverflow, и, похоже, действительно сложно создать левое соединение с подзапросом с помощью querybuilder : (
5. @RobertHarvey как вы думаете, возможно ли преобразовать мой sql с помощью 2 запросов и использовать WHERE IN?