+ Yanıtla
Toplam 4 sonuçtan 1 ile 4 arası olanlar

Konu Başlığı: İki tarih arasındaki veriyi değerlendirme?

  1. #1

    İki tarih arasındaki veriyi değerlendirme?

    Benim elimde bir firmaya ait yıllık veri var. Firmanın günlük verilerini listeleyeceğimiz zaman bir problem yaşamıyorum. Fakat firmanın haftalık/aylık verilerini listelemek için tarihleri bir döngü içinde arttırarak, her adımda SQL sorgusu işleterek, sorgudan gelen veriyi alıp PHP de dizi içine atıyorum. bu dizi içinde istediğim alanları (min, max, avg, vb.) başka bir diziye atarak istediğim sonuçları alıyorum. fakat bu durum tarih aralıkları büyüdüğü zaman sonucun işlenmesi epey bir zaman alıyor. bunun yerine min, max gibi değerleri direk SQL sorgusundan aldığım zaman süreç daha hızlı sonuçlanıyor. fakat bu sefer de sorguda istediğim sadece bir sutunu yanlış alıyor daha doğrusu istediğim yeri alamıyorum. örnek vermem gerekirse;
    Kod:
    dusuk 	yuksek 	kapanis 	tarih 	
    4.26  	4.38  	4.30  	2008-11-03 17:00:00
    4.38 	4.54 	4.52 	2008-11-04 17:00:00
    4.12 	4.38 	4.16 	2008-11-05 17:00:00
    3.90 	4.02 	3.98 	2008-11-06 17:00:00
    3.80 	4.00 	3.82 	2008-11-07 17:00:00
    
    şeklinde 2008-11-03 ve 2008-11-07 tarihleri arasını gösteren bir tablom var. bu tablodan istediğim alanları:
    Kod:
    SELECT min(dusuk) as dusuk, max(yuksek) as yuksek, kapanis FROM veriler where kod = 'ISCTR' and tarih >= '2008-11-03' and tarih <= '2008-11-08' and tarih like '%17:00:00' group by kod
    
    SQL koduyla sorgulattığım zaman gene istediğim min max değerleri alabiliyorum.
    Kod:
    dusuk 	yuksek 	kapanis
    3.80 	4.54 	4.30
    
    fakat kapanis değeri olarak haftanın son günü olan 07-11 tarihindeki değeri almam gerekiyor. ne yaparsam yapayım hiçbir şekilde son satırdaki değeri alamadım. sadece ilk satırı alıyor diye "order by tarih desc" ile değiştireyim istedim ama bu sefer de sorgudaki "group by kod" ile sorun çıkartıyor. haftalık veri için tablodaki son satırdaki değeri nasıl alabilirim? sizce haftalık veri işlemeyi döngü içine her adımda SQL sorgusu işletmekten daha kolay bir yol var mıdır?

  2. #2

    Re: İki tarih arasındaki veriyi değerlendirme?

    Günü kurtarmak adına şu denenebilir.
    FROM'dan hemen önce yazan "kapanis" yerine bir SELECT sorgusu ekleyerek istediğin gibi bir sonuca ulaşmış olursun

    Kod:
    SELECT min(dusuk) as dusuk, max(yuksek) as yuksek, (select kapanis from veriler where kod = 'ISCTR' and DATE_FORMAT(tarih, '%Y-%m-%d') = '2008-11-07') as kapanisFROM veriler where kod = 'ISCTR' and tarih >= '2008-11-03' and tarih <= '2008-11-08' and tarih like '%17:00:00' group by kod
    
    sevgiSaygi = true;

  3. #3

    Re: İki tarih arasındaki veriyi değerlendirme?

    Yani son sorgu şu şekilde olmuş olarak;

    Kod:
    SELECT 
     min(dusuk) as dusuk, 
     max(yuksek) as yuksek, 
     (select kapanis from veriler 
       where kod = 'ISCTR' 
       and DATE_FORMAT(tarih, '%Y-%m-%d') = '2008-11-07') as kapanis 
     FROM veriler 
     where kod = 'ISCTR' and tarih >= '2008-11-03' 
      and tarih <= '2008-11-08' 
      and tarih 
      like '%17:00:00'
     group by kod;
    
    sevgiSaygi = true;

  4. #4

    Re: İki tarih arasındaki veriyi değerlendirme?

    Alıntı wefra tarafından gönderilen mesaj: Mesajı Göster
    Yani son sorgu şu şekilde olmuş olarak;

    Kod:
    SELECT 
     min(dusuk) as dusuk, 
     max(yuksek) as yuksek, 
     (select kapanis from veriler 
       where kod = 'ISCTR' 
       and DATE_FORMAT(tarih, '%Y-%m-%d') = '2008-11-07') as kapanis 
     FROM veriler 
     where kod = 'ISCTR' and tarih >= '2008-11-03' 
      and tarih <= '2008-11-08' 
      and tarih 
      like '%17:00:00'
     group by kod;
    
    daha önce subquery ile denemiştim. hatta tarihi ters sıraya çevirmeyi subquery ile denedim ama hata almıştım. asıl istediğim sutunu tek başına sorgulattırmak hiç aklıma gelmemiş. resmen bir işi direk yapmak yerine dolaylı yoldan yapmaya çalışmışım. tam istediğim gibi bir cevap geldi, cevabın için çok teşekkür ederim...

+ Yanıtla

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz