У меня есть настольная кампания, в которой есть подробности отправленных писем.
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. Можно ли получить тот же результат, используя соединения? если да, пожалуйста, скажите мне, как.