• 05-12-2018, 19:30:48
    #1
    F. STACK WEB + MOBILE DEV
    Merhaba arkadaşlar, php de yapmak istediğim bir şey var.

    Bir tablo içerisinde yüzlerce data mevcut, hepsinin kayıt tarihi var 2018-11-23 14:25:28 şu şekilde.

    Benim yapmak istediğimse, son 15 gün içerisindeki tüm günler için, tek tek o güne ait kaç tane veri olduğunu öğrenmek. Atıyorum ayın 20'sine 5 veri girilmiş, 23'ünde 20 veri girilmiş gibi.

    Nasıl yaparım bunu?
  • 05-12-2018, 19:42:00
    #2
    Selam, işini görür muhtemelen.
    SELECT * FROM `tabloadi` WHERE tarihkolonu >= DATE_SUB( CURDATE( ) , INTERVAL 15 DAY ) ORDER BY tarihkolonu DESC
  • 06-12-2018, 14:34:49
    #3
    Şöyle bir ekleme yapalım:

    SELECT COUNT(order_id) AS ADET, C.O.N.C.A.T(YEAR(created_at), MONTH(created_at), DAY(created_at)) AS TARIH  FROM orders
    WHERE created_at >= DATE_SUB( C.U.R.D.A.T.E( ) , INTERVAL 15 DAY )
    GROUP BY YEAR(created_at), MONTH(created_at), DAY(created_at)
    Not: Cloudflare engellediği için concat ve curdate fonksiyonlarının arasına nokta koydum. Düzeltmeniz gerekir.
    Not2: Konu PHP ile ilgili değil MySQL ile ilgili (ya da hangi veritabanını kullanıyorsanız.)

    Ekran çıktısı:
  • 03-01-2019, 15:39:26
    #4
    F. STACK WEB + MOBILE DEV
    ibrahimfidan adlı üyeden alıntı: mesajı görüntüle
    Selam, işini görür muhtemelen.
    SELECT * FROM `tabloadi` WHERE tarihkolonu >= DATE_SUB( CURDATE( ) , INTERVAL 15 DAY ) ORDER BY tarihkolonu DESC
    Bu son 15 güne ait datayı versede, her güne ait tek tek data vermemekte.
    Aşağıda yazdığım MYSQL hatalı ama ne demek istediğimi anlatabilmişimdir belki.

    $data = array();
    for ($i=16; $i > 1; $i--) { 
    	$query = $db->query("SELECT * FROM orders WHERE orderDATE = '{$i}' DAYS AGO");
    	$data[$i] => $query->rowCount();
    
    }
    Şu şekilde bi data istediğim
    [1: 12, 2: 34, 3: 23, 4: 6, 5: 34, 6: 22, 7: 12, 8: 34, 9: 23, 10: 84, 11: 47, 12: 45, 13: 55, 14: 23, 15: 12]
    Ya da bu şekil:
    [12, 34, 23, 6, 34, 22, 12, 34, 23, 84, 47, 45, 55]
  • 03-01-2019, 20:55:18
    #5
    Aşağıdaki mysql sorgusu istediğiniz gibi galiba kontrol edebilirsiniz.

    SELECT DATE(al.tarih) as tarih,(select count(id) from test_tablo where DATE(tarih) = DATE(al.tarih)) as toplam FROM test_tablo as al WHERE al.tarih >= DATE_SUB( CURDATE( ) , INTERVAL 15 DAY ) GROUP BY DATE(al.tarih) ORDER BY al.tarih DESC;