У меня есть кампания с таблицей, в которой есть сведения о отправляемых почтовых сообщениях.Как написать этот запрос, используя соединения?
campaign_table: campaign_id campaign_name flag
1 test1 1
2 test2 1
3 test3 0
другая деятельность в кампаниях с таблетками, которая содержит информацию о деятельности кампании.
campaign_activity: campaign_id is_clicked is_opened
1 0 1
1 1 0
2 0 1
2 1 0
Я хочу, чтобы все кампании со значением 3 флага и числа is_clicked столбцов со значением 1 и числом столбцов с is_opened значением 1 в одном запросе.
ie. campaign_id campaign_name numberofclicks numberofopens
1 test1 1 1
2 test2 1 1
Я сделал это с помощью вложенного запроса с запросом:
select c.campaign_id,c.campaign_name,
(SELECT count(campaign_id) from campaign_activity WHERE campaign_id=c.id AND is_clicked=1) as numberofclicks,
(SELECT count(campaign_id) from campaign_activity WHERE campaign_id=c.id AND is_clicked=1) as numberofopens
FROM
campaign c
WHERE c.flag=1
Но люди говорят, что использование подзапросы не являются хорошим правилом кодирования, и вы должны использовать объединение вместо подзапросов , Но я не знаю, как получить тот же результат, используя join. Я консультировался с некоторыми из моих коллег, и они говорят, что его невозможно использовать в этой ситуации. Можно ли получить тот же результат с помощью объединений? если да, скажите, пожалуйста.
Его обычно нормально использовать подзапросы в выражении WHERE, но не использовать их в качестве столбцов. –