2 tablo

1.tablo tbl1
id hit
1 100

2.tablo tbl2
id, tbl1_id(int), islem_tarih(DATETIME DEFAULT NOW())
1 1 O7.16.2022 15:20:20
2. 2. 07.16.2022 15:22:10

İşlem yükünü hafifletmek için hit alanını güncelleyebilirsiniz ya da hit alanını ilişkiden alırsınız örnek
Select tbl1.*,tbl2.hit FROM tbl1 LEFT JOIN (
select count(id) as hit, tbl1_id from tbl2 group by tbl1_id)
) as tbl2 ON tbl1.id = tbl2.tbl1_id



Normalizasyon olarak birden çoğa ilişkilendirilmeli.

tbl2 tablosuna işlem kaydını backend tarafında insert ile eklemeyek yerine mysql de trigger hazırlayabiliriz
Hit alanı güncellendiğinde tbl2 tablosuna yeni kayıt oluşturmak için trigger oluşturuyoruz.

DELIMITER $$
CREATE TRIGGER after_tbl1_update
AFTER UPDATE
ON tbl1 FOR EACH ROW
BEGIN
IF OLD.hit <> new.hit
THEN
INSERT INTO tbl2(tbl1_id) VALUES(old.id);
END IF;
END$$
DELIMITER ;



Kayıt tarihleri elimizde olduğuna göre

Ocak 2020 tarihi için toplam hit sayısı

Select tbl1.*,tbl2.hit FROM tbl1 LEFT JOIN
(
SELECT count(id) as hit,tbl1_id FROM tbl2
WHERE YEAR(islem_tarih) = 2020 and MONTH(islem_tarih) = 1
GROUP BY tbl1_id
)
as tbl2
ON tbl1.id = tbl2.tbl1_id


*** Bu ay içerisinde toplam hit sayısı
Select tbl1.*,tbl2.hit FROM tbl1 LEFT JOIN
(
SELECT count(id) as hit,tbl1_id FROM tbl2
WHERE YEAR(islem_tarih) = YEAR(NOW()) and MONTH(islem_tarih) = MONTH(NOW())
GROUP BY tbl1_id
)
as tbl2
ON tbl1.id = tbl2.tbl1_id

Mobil tarafında hazırladığımdan syntax hatası olabilir, temel algoritma yukarıdaki gibi