Раз данные одного вида, то через UNION:
SELECT
`campaign_post`,
`campaign_name`,
`post`,
COUNT(*) AS `leads`,
SUM(`new`) AS `new`,
SUM(`approved`) AS `approved`,
SUM(`declined`) AS `declined`,
SUM(`webmaster_profit`) AS `webmaster_profit`
FROM (
SELECT
CONCAT(w,'|',t) AS `campaign_post`,
w AS `campaign_name`,
t AS `post`,
IF(`status` = 'new', 1, 0) AS `new`,
IF(`status` = 'approved', 1, 0) AS `approved`,
IF(`status` = 'declined', 1, 0) AS `declined`,
web_total AS `webmaster_profit`
FROM `m1`
UNION ALL
SELECT
CONCAT(`subid1`, '|', `subid2`) AS `campaign_post`,
`subid1` AS `campaign_name`,
`subid2` AS `post`,
IF(`status` = 'waiting', 1, 0) AS `new`,
IF(`status` = 'approved', 1, 0) AS `approved`,
IF(`status` IN ('declined', 'trash'), 1, 0) AS `declined`,
`profit` AS `webmaster_profit`
FROM `add1`
) q1
GROUP BY `campaign_post`,
`campaign_name`,
`post`;
UPD. Исправил кавычки