Ваш запрос возвращает ноль, потому что в tblcampaignschedule нет строки с совпадающим идентификатором и ненулевым MailChimpCampaignID
. Я думаю, что лучше всего сделать внутреннее соединение с 'tblcampaignschedule' и таким образом отфильтровать нули ..
Вот как бы я это сделал (внес некоторые другие изменения, чтобы избавиться (я думаю) от ненужных вложенных элементов). Однако, если вы не покажете нам свою структуру таблицы с некоторыми примерами данных, это в лучшем случае предположение.
DELIMITER $$
DROP PROCEDURE IF EXISTS `CouponCrusaderDev`.`sp_tblemailcampaignLoadTop4`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_tblemailcampaignLoadTop4`(p_UserID Int(11))
SQL SECURITY INVOKER
BEGIN
SELECT EC.*,
Select tcs.MailChimpCampaignID as MailChimpCampaignID,
count(distinct tcs.MailChimpCampaignID)as msent,
CT.CampaignType,
max(tcs.ScheduleDateTime) as CampaignDateTime,
Count(*) as Sent
FROM tblemailcampaign EC
inner join tblcampalgntype CT on CT.CampaignTypeID= EC.CampaignTypeID
inner join tblcompanies C On EC.CompanyID = C.CompanyID
inner join tblcampaignschedule tcs ON EC.CampaignID=tcs.CampaignID AND MailChimpCampaignID IS NOT NULL
inner join tblemailsent ES ON tcs.CampaignSceduleID= ES.CampaignSceduleID AND ES.Status= 'ProcessedMessage'
WHERE (p_UserID = 0 OR C.AddUserID = p_UserID)
order by CampaignDateTime desc limit 4
;
END$$
DELIMITER ;
EDIT:
DELIMITER $$
DROP PROCEDURE IF EXISTS `CouponCrusaderDev`.`sp_tblemailcampaignLoadTop4`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_tblemailcampaignLoadTop4`(p_UserID Int(11))
SQL SECURITY INVOKER
BEGIN
SELECT EC.*,
Select tcs.MailChimpCampaignID as MailChimpCampaignID,
(Select count(MailChimpCampaignID) from tblcampaignschedule) as msent,CT.CampaignType,
(Select tblcampaignschedule.ScheduleDateTime from tblcampaignschedule
where EC.CampaignID=tblcampaignschedule.CampaignID order By ScheduleDateTime desc limit 1) as CampaignDateTime,
(Select Count(*) from tblemailsent ES
inner join tblcampaignschedule CS on CS.CampaignSceduleID= ES.CampaignSceduleID
where ES.Status= 'ProcessedMessage' and CS.CampaignID = EC.CampaignID)as Sent
FROM tblemailcampaign EC
inner join tblcampalgntype CT on CT.CampaignTypeID= EC.CampaignTypeID
inner join tblcompanies C On EC.CompanyID = C.CompanyID
inner join tblcampaignschedule tcs ON EC.CampaignID=tcs.CampaignID AND MailChimpCampaignID IS NOT NULL
WHERE (p_UserID = 0 OR C.AddUserID = p_UserID)
order by CampaignDateTime desc limit 4
;
END$$
DELIMITER ;