Bir yıl içinde her gün verileri almak için yalnızca bir sorgu nasıl kullanılır?

3 Cevap php

Ben geriye doğru bir yıl içinde her gün veri almak istiyorum ama sanki her gün için 365 sorguları kullanmak zorunda:

for ($i = 0; $i<365; $i++){
    $end_day = ...; // the end time of each day
    $start_day = ...; // the start time of each day
    $query = select count(*)....where created < $end_day AND created > $start_day
}

Benim geçerli çözüm sistemi çok yavaş olmasını düşünüyorum. Sadece bir sorgu sadece kullanmak için herhangi bir yolu var mı?

3 Cevap

Sizin oluşturduğunuz sütun DATETIME veya TIMESTAMP olduğunu ve depolanan verilerin bir günden fazla taneli olduğunu varsayarsak:

(Oluşturulan) YILLARA GÖRE SELECT COUNT (*) ... GRUP, AY (oluşturulan), GÜN (oluşturulan)

COUNT bir toplama işlevi olduğunu ve grup ve satır başına bir satır olacak, yani bu grubun kayıtların numarası olacak, her grup için geçerli olacaktır. Biz bir grup bir gün yaptığınız gibi, bu istediğiniz veridir.

GÜN ayın gününü verir, bu yüzden biz de yapmak için ay ve yıl koymak gerekir gibi (yaratılmış) DAY tarafından değil, sadece grup emin günler ayrık olabilir.

Muhtemelen yaratılmış> $ başlangıç ​​VE oluşturulan istiyorum < Bazı zaman çerçevesi (ya da bir YIL (oluşturulan) == 2010) sınırlamak için $ bitirmek.

Referanslar:

http://stackoverflow.com/questions/508791/mysql-query-group-by-day-month-year

http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html

Sen fıkra ile bir grup kullanabilirsiniz. http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html

Eğer tarih zamanınız varsa bunu sadece tarihi almak için biçimlendirmek gerekecek (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html # function_date- biçimi)

select count(*), created from my_table group by created

Zaten bir datetime sütun ise:

SELECT COUNT(*),DATE(created) as d ..... GROUP BY d;

Bir unix zaman damgası olarak depolanır eğer:

SELECT COUNT(*),DATE(FROM_UNIXTIME(created)) as d ..... GROUP BY d;

Temelde, her tarih için bir sayımını almak için bu tarihlere göre Date and Time functions bunun dışında sadece bir tarih almak gibi bu sütunu biçimlendirmek ve daha sonra grup için Mysql kullanabilirsiniz.