2009-03-30 18 views
6

tôi chạy một tạp chí trực tuyến và muốn một cách dead-đơn giản để theo dõi 3 số liệu:mySQL Query để liệt kê số lượng nhận xét mà trang web của tôi nhận được mỗi ngày?

  1. Có bao nhiêu ý kiến ​​còn lại mỗi ngày.
  2. Có bao nhiêu liên kết mà người dùng của tôi gửi.
  3. Tôi có bao nhiêu thành viên mới mỗi ngày.

Thông tin này là tất cả cơ sở dữ liệu của tôi, tôi chỉ không chắc chắn cách làm cho nó ra.

Tôi có bảng "nhận xét" với khoảng 3500 nhận xét. Mỗi nhận xét sẽ có một hàng trong bảng. Một trong các cột trong bảng là "dấu thời gian". Tôi giả sử có một truy vấn sẽ chọn bảng này, sắp xếp các hàng theo dấu thời gian, nhóm chúng theo số gia số 24 giờ và sau đó đếm số hàng trong mỗi nhóm - cho tôi biết có bao nhiêu nhận xét mới mà tôi nhận được mỗi ngày.

Truy vấn đó trông như thế nào? Tôi nghĩ rằng tôi có thể tìm ra những người khác nếu tôi có người đầu tiên làm việc.

+0

Cột dấu thời gian là gì? Đây có phải là một dấu thời gian thực, một DATE/DATETIME của một số sắp xếp, hay nó là một INT lưu trữ một dấu thời gian unix? – Powerlord

+0

Đó là một int (11) có chứa một dấu thời gian Unix. – FGM

Trả lời

7

đoạn này sẽ hiển thị kết quả trong một bảng theo chủ đề:

$sq = 'SELECT COUNT(*) cnt, DATE(FROM_UNIXTIME(timestamp)) day ' 
    . 'FROM {comments} c ' 
    . 'GROUP BY 2 ' 
    . 'ORDER BY 2 DESC'; 
$q = db_query($sq); 
$stats = array(); 
while ($o = db_fetch_object($q)) { 
    $stats[$o->day] = array($o->day, $o->cnt); 
} 
return theme('table', NULL, $stats)); 

Sử dụng DATE (timestamp) không hoạt động vì comments.timestamp là ở định dạng UNIX_TIMESTAMP, trong khi DATE() hy vọng một ASCII ngày.

0

Sử dụng hàm date_format() để định dạng ngày;

select count(id) as commentCount, date_format(dateColumn, '%Y-%m-%d') as commentDate 
from yourTable 
group by commentDate 
Các vấn đề liên quan