• 21-08-2016, 02:15:46
    #1
    Merhaba,

    veritabanımdaki personellerin günlük, haftalık,aylık ve yıllık kapattığı rapor sayılarını tek bir tabloda listelemek istiyorum.

    Kullandığım kod:

    SELECT personel_isim,( SELECT COUNT(*) FROM dosya WHERE DAY(duzenleme) = DAY(CURDATE())) as gunluk,
        ( SELECT COUNT(*) FROM dosya WHERE WEEK(duzenleme) = WEEK(CURDATE())) as haftalik,
        ( SELECT COUNT(*) FROM dosya WHERE MONTH(duzenleme) = MONTH(CURDATE())) as aylik,
        ( SELECT COUNT(*) FROM dosya WHERE YEAR(duzenleme) = YEAR(CURDATE())) as yillik
         FROM dosya WHERE durum=2 AND statu!=0 group by personel_isim
    Sorun şu ki personel_isim e göre gruplama yapmama rağmen listelemede her personele sistemdeki toplam kapalı rapor sayılarını veriyor. (tüm personelin kapalı raporları sayıyor, personele göre sayıları ayırmıyor)



    Yukarıda da görüldüğü gibi isme göre rapor sayısı alacağına, tüm rapor sayılarını her iki isim içinde alıyor.

    Ben her personelin günlük, haftalık, aylık ve yıllık kapalı rapor sayılarını personel bazında listelemek istiyorum.

    Kullandığım kodda ki yanlışlık nerededir, üstatlar bir bakarsa sevinirim.
  • 21-08-2016, 04:41:28
    #2
    LuCiFeR adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    veritabanımdaki personellerin günlük, haftalık,aylık ve yıllık kapattığı rapor sayılarını tek bir tabloda listelemek istiyorum.
    Tarih sorgulama hatalı gibi: http://www.dmry.net/mysql-ile-tarih-sorgulari/
    Örn: MONT() sorgulamada yıla bakılmaz. geçen senenin aynı ayına ait kayıtlar da gelir.

    SELECT
    	  personel_isim
    	, ( SELECT COUNT(*) FROM dosya WHERE DAY(duzenleme) = DAY(CURDATE()) GROUP BY personel_isim  ) as gunluk
    	, ( SELECT COUNT(*) FROM dosya WHERE WEEK(duzenleme) = WEEK(CURDATE()) GROUP BY personel_isim  ) as haftalik
    	, ( SELECT COUNT(*) FROM dosya WHERE MONTH(duzenleme) = MONTH(CURDATE()) GROUP BY personel_isim  ) as aylik
    	, ( SELECT COUNT(*) FROM dosya WHERE YEAR(duzenleme) = YEAR(CURDATE()) GROUP BY personel_isim  ) as yillik 
    FROM dosya 
    WHERE durum=2 AND statu<>0
    * Denenmedi.