Я хочу получить данные из трех разных таблиц
Таблица 1: iep_start_lp_request
Таблица 2: iep_employee_list
Таблица 3: iep_postmeta
Мне нужно подсчитать количество сотрудников, прошедших сертификацию по разным категориям в каждом месяце.
Ниже приведен запрос, который я пробовал
select SUBSTRING_INDEX(SUBSTRING_INDEX( certicatname.`meta_value`,':"',-1) ,'";}',1)
as 'certicatname',
max(case when (lp2.`created_date` BETWEEN '2022-04-01' AND '2022-01-01') then COUNT(lp2.`user_emp_id`) end) as Jan,
max(case when (lp2.`created_date` BETWEEN '2022-08-01' AND '2022-04-01') then COUNT(lp2.`user_emp_id`) end) as Feb,
max(case when (lp2.`created_date` BETWEEN '2022-12-01' AND '2022-08-01') then COUNT(lp2.`user_emp_id`) end) as mar
from
`iep_start_lp_request` as lp2 LEFT JOIN `iep_employee_list` as emplyoee2 ON lp2.`user_emp_id`=emplyoee2.`EmpOldID` LEFT JOIN `iep_postmeta` as certicatname ON certicatname.`post_id`=lp2.`lp_id` WHERE (certicatname.`meta_value` REGEXP '.*;s:[0-9]+:"AWS Certifications".*' OR certicatname.`meta_value` REGEXP '.*;s:[0-9]+:"Microsoft Certifications".*' OR certicatname.`meta_value` REGEXP '.*;s:[0-9]+:"Google Certifications".*' ) AND lp2.`certifications_check`='yes' GROUP BY certicatname.`meta_value` ORDER BY certicatname.`meta_value`;
Как форматировать рассматриваемые таблицы meta.stackoverflow.com/questions/302471/… и онлайн-инструмент tablesgenerator.com/markdown_tables
привет @SelVazi Я обновил вопрос, чтобы таблицы были в виде текста, не могли бы вы помочь сейчас, спасибо
4.01, 5.50, 7.39 не считаются сертификатами. В математике счетчики имеют целочисленные значения. Обновите ожидаемый результат, чтобы он отражал ваше описание (или наоборот), и используйте таблицы в текстовом формате вместо изображений.






Можете ли вы попробовать это:
select
SUBSTRING_INDEX(SUBSTRING_INDEX( ip.meta_value,':"',-1) ,'";}',1) as certificate,
coalesce(count(case when month(isr.created_date) = 1 then 1 end), 0) as JAN,
coalesce(count(case when month(isr.created_date) = 2 then 1 end), 0) as FEB,
coalesce(count(case when month(isr.created_date) = 3 then 1 end), 0) as MARS
from iep_start_lp_request isr
inner join iep_employee_list iel on iel.EmpOldID = isr.EmpOldID
inner join iep_postmeta ip on ip.iep_postmeta = isr.lp_id
where isr.certifications_check = 'yes'
group by ip.meta_value, month(isr.created_date);
Я использовал почти ту же логику, что и ваша:
SUBSTRING_INDEX чтобы получить имя сертификата, case when для создания столбцов из строк.
и если нам нужны данные на основе сертификата и месяца, нам нужно сгруппировать по обоим, а не только по сертификатам.
Попробовать можно отсюда https://dbfiddle.uk/l-PV7_zj
эй @SelVazi, спасибо :) это сработало для меня с некоторыми небольшими изменениями, основанными на именах моих таблиц :)
Рад слышать это .. наслаждайтесь кодированием :)
Можете ли вы поделиться своими данными в виде текста, а не фотографий, это поможет нам помочь вам