ben

OMÜ , Bilgisayar Mühendisliği, 13'

19 Ocak 2022 Çarşamba

filtre Procedure

 

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: