У меня есть 2 таблицы:
LandingPages - содержит целевые страницы для кампании.
Отчеты - содержат обращения и конверсии на целевую страницу.
Я пытаюсь сделать запрос, который приносит сумму хитов и конверсий на целевую страницу,
Но я хочу, чтобы, если целевая страница не получала никаких обращений и конверсий ( и не отображалась в таблице отчетов ), тогда я хочу, чтобы в качестве результата возвращалось 0.
Что я делаю до сих пор:
SELECT l.LandingPageId, SUM(Hits) AS Hits, SUM(PixelSum) AS Conversion
FROM Report c
RIGHT JOIN LandingPages l ON(c.LandingPageId = l.LandingPageId )
WHERE c.CampaignId = x
AND DayDate > 'y'
GROUP BY c.LandingPageId
Проблема в том, что я получаю только строки с целевой страницей, которые существуют в таблице отчетов, и передаю дату 'y',
(например, я получаю только 2 строки целевой страницы, но есть 4 целевых страницы
если я выполню этот запрос, я получу 4 результата
SELECT l.LandingPageId FROM LandingPages l WHERE l.CampaignId = x
)
не вся целевая страница (со значением 0),
как я могу заставить это работать так, как я хочу, дать мне также целевую страницу, которая не в таблице отчета или в таблице, а в старой дате?
спасибо.
обновление:
Мне очень помогли за ваши ответы, я получил частичное решение, которое работает для меня, только если целевая страница вообще не существует в таблице отчетов, но если она существует, но предложение даты не соответствует, оно не появляется:
запрос частичного решения:
SELECT l.LandingPageId, IFNULL(SUM(Hits),0) AS Hits, IFNULL(SUM(PixelSum),0) AS Conversion
FROM LandingPages l
LEFT JOIN Report c ON( l.LandingPageId = c.LandingPageId)
WHERE (l.CampaignId = x OR l.CampaignId IS NULL)
AND (DayDate > 'y' OR DayDate IS NULL)
GROUP BY l.LandingPageId
Мне все еще нужна твоя помощь!
спасибо!