By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE targets(
name VARCHAR(70) NOT NULL
,target INTEGER NOT NULL
);
INSERT INTO targets
(name,target) VALUES
('name1',6),
('name2',3),
('name3',2);
CREATE TABLE records(
id INTEGER NOT NULL
,name VARCHAR(70) NOT NULL
,created_on DATE NOT NULL
);
INSERT INTO records
(id,name,created_on) VALUES
(546,'name1','2022-06-02'),
(547,'name2','2022-06-04'),
(548,'name2','2022-06-07');
select
targets.name,
target,
IF(current is null , 0, current) as current
from targets
left join (
SELECT name, COUNT(id) current FROM records
WHERE MONTH(created_on) = MONTH(CURRENT_DATE())
AND YEAR(created_on) = YEAR(CURRENT_DATE())
GROUP BY name) records
on records.name=targets.name
name | target | current |
---|---|---|
name1 | 6 | 1 |
name2 | 3 | 2 |
name3 | 2 | 0 |