2008-12-18 29 views
2

我有1個名爲urltracker的表,其中包含關於特定url被點擊的次數的信息。該表結構爲4列id,urlclicked,引用和時間戳。每次單擊URL時,urltracker都會在表中創建另一個條目。計算mySQL列中某些數據的實例數

我想要做的是顯示一個特定的網址和它被點擊的次數,然後用戶可以通過點擊來揭示所有這些網址被點擊的具體時間。

我不是sql專家,但這聽起來像我需要最初顯示所有不同的網址後面跟着一個子查詢,它顯示了這個特定網址的所有條目。

我在想這個還是有一個更簡單的方法嗎?

回答

2

需要考慮的一件事是使用兩個表格 - 一個表格包含獨特的網址,另一個存儲點擊信息(或者使用唯一的序列號加入它們,或者url(因爲它是唯一的))

但要回答您的查詢問題 - 是的,我會有一個查詢顯示URL和第二個查詢來獲取特定URL的數據(只有/當用戶請求該信息時)。

3

類似的東西應該做的伎倆: 第一:

SELECT urlclicked, 
     COUNT(*) 
    FROM urltracker 
GROUP BY urlclicked 

然後當用戶點擊一些鏈接:

SELECT id, 
     urlclicked, 
     referrer, 
     timestamp 
FROM urltracker 
WHERE urlclicked = ?clickedUrl 

顯示詳細信息。

+0

我以前做過 - 它運作良好。但它不能很好地擴展。第一個查詢與group by可以在一個年齡一旦有大量的數據在那裏。儘管......並不是一個簡單的方法,但如果要經常查看它,它可能會定期緩存總數。 – benlumley 2008-12-18 11:59:54

0

你應該能夠做這樣的事情讓每個URL的總數:

SELECT urlclicked, COUNT(urlclicked) AS total 
FROM urltracker 
GROUP BY urlclicked 

這是你所追求的?

0

是的,在某種程度上üR右:

SELECT id, 
     tb1.urlclicked, 
     referrer, 
     timestamp, tb2.totaltimesclicked 
FROM urltracker as tb1 
inner join 
(SELECT urlclicked, 
     COUNT(urlclicked) as totaltimesclicked 
    FROM urltracker 
GROUP BY urlclicked) as tb2 
on tb1.urlclicked = tb2.urlclicked 

這將的howmany次,每次網址被點擊一起顯示所有信息。

相關問題