Burada yazacağımız procedure bir video bilgilerine göre verilerin filtrelenmesini sağlamaktadır. Procedure gelen gelen üç parametre var.
* Birincisi izlenen videoların mı izlenmeyen videolarınmı gelmesini belirtmek için o yada 1 parametresi göndermemiz gerekiyor. eğer izlenme durumunu vermez ise tum video bilgilerini getirecektir.
* ikincisi izlenme tarih aralığına göre son bir hafta için h, son bir ay için m, son 3 ay için 3m, son bir yıl için y parametresini procedure vermemiz gerekiyor. Eğer hiç bir parametre göndermezsek tum bilgileri getirecektir.
* üçüncü parametre ise, hangi kullanıcının izleme bilgileri için kullanıcı id bilgisini vermemiz gerekiyor. eğer kullanıcı id bilgisini vermez isek, tüm kullanıcıların izleme bilgilerini getirecektir.
procedure komutumuzu yazıp git butonu ile çalıştıralım.
DELIMITER $
create or replace procedure
sp_filtre(
in izlendi_mi boolean,
in yayin_tarihi varchar(2) ,
in kullanici_id int
)
BEGIN
IF yayin_tarihi='h' THEN
set @tarih =(SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -7 DAY));
ELSEIF yayin_tarihi='m' THEN
set @tarih =(SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -1 MONTH));
ELSEIF yayin_tarihi='3m' THEN
set @tarih =(SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -3 MONTH));
ELSEIF yayin_tarihi='y' THEN
set @tarih =(SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -1 YEAR));
ELSE
set @tarih=NULL;
END IF;
if @tarih=null THEN
select eg.egitim_id, baslik,
aciklama,resim_url from egitim eg left join kullaniciegitim ke on
ke.egitim_id=eg.egitim_id where
ke.kullanici_id=IFNULL(kullanici_id,ke.kullanici_id) and
izlendimi=IFNULL(izlendi_mi,ke.izlendimi);
else
select eg.egitim_id, baslik,
aciklama,resim_url from egitim eg left join kullaniciegitim ke on ke.egitim_id=eg.egitim_id
where
ke.kullanici_id=IFNULL(kullanici_id,ke.kullanici_id) and
izlendimi=IFNULL(izlendi_mi,ke.izlendimi) and
eg.created_at BETWEEN
@tarih and CURRENT_DATE();
end if;
end $
DELIMITER ;
son 3 aydaki 1 numaralı kullanıcının izlemediği video bilgisi için örnek procedure çağırma komutu:
CALL sp_filtre(false,'3m', 1);
Hiç yorum yok:
Yorum Gönder