2015-05-25 37 views
0

使用PHP cron作業,如何輸出訪問同一頁面的用戶超過2次?克倫的工作,以確定在同一網址多次訪問?

下面是MySQL數據庫表

id - user - page - timestamp 
340 - 1 - page1 - 2009-05-18 22:11:11 
339 - 1 - page1 - 2009-05-18 22:10:01 
337 - 1 - page1 - 2009-05-18 22:06:00 
336 - 2 - page3 - 2009-05-18 22:00:00 
335 - 2 - page3 - 2009-05-18 21:56:00 

回答

2

這可以用group bycount

select 
user,page, count(*) as total 
from table_name 
group by user,page 
having total > 2 

UPDATE

輕鬆完成我怎麼能與這些結果更新另一個表?用戶 - 第 - 次

這可利用另外insert into select from進行使用on duplicate key update

考慮以下

mysql> select * from pages ; 
+------+------+ 
| user | page | 
+------+------+ 
| 1 | p1 | 
| 1 | p1 | 
| 1 | p1 | 
| 2 | p1 | 
| 2 | p1 | 
| 2 | p2 | 
| 3 | p2 | 
| 3 | p2 | 
| 3 | p2 | 
+------+------+ 



create table page_view_log 
    (
     user int, 
     page varchar(100), 
     times int, 
     primary key(user,page) 
    ); 

select * from page_view_log ; 

請注意,這裏的日誌表具有複合鍵(user,page)

現在以下查詢將完成作業

insert into page_view_log(user,page,times) 
select 
user,page,total from (
select user,page, count(*) as total 
from pages 
group by user,page 
having total > 2 
)x 
on duplicate key update times = total 


mysql> select * from page_view_log ; 
+------+------+-------+ 
| user | page | times | 
+------+------+-------+ 
| 1 | p1 |  3 | 
| 3 | p2 |  3 | 
+------+------+-------+ 
2 rows in set (0.00 sec) 

現在,讓我們在第一表user-1

insert into pages values (1,'p1'),(2,'p2'),(2,'p2'); 

添加更多的頁面現在,如果我們再次運行上面的查詢,將更新全部現有數據和插入新值,重複使用複合考慮鍵(user,page)

mysql> select * from page_view_log ; 
+------+------+-------+ 
| user | page | times | 
+------+------+-------+ 
| 1 | p1 |  4 | 
| 2 | p2 |  3 | 
| 3 | p2 |  3 | 
+------+------+-------+ 
+0

謝謝。所以現在我們發現有兩次頁面訪問的用戶。我如何用這些結果更新另一個表?用戶 - 頁面 - 次 – poulokopri

+0

更新或插入?第二張桌子是否已經擁有'user'和'page'以便它只會更新? –

+0

第二個表格將有'user - page - times'列。它會像「插入,如果不存在,否則更新」。 – poulokopri