我有1個名爲urltracker的表,其中包含關於特定url被點擊的次數的信息。該表結構爲4列id,urlclicked,引用和時間戳。每次單擊URL時,urltracker都會在表中創建另一個條目。計算mySQL列中某些數據的實例數
我想要做的是顯示一個特定的網址和它被點擊的次數,然後用戶可以通過點擊來揭示所有這些網址被點擊的具體時間。
我不是sql專家,但這聽起來像我需要最初顯示所有不同的網址後面跟着一個子查詢,它顯示了這個特定網址的所有條目。
我在想這個還是有一個更簡單的方法嗎?
我有1個名爲urltracker的表,其中包含關於特定url被點擊的次數的信息。該表結構爲4列id,urlclicked,引用和時間戳。每次單擊URL時,urltracker都會在表中創建另一個條目。計算mySQL列中某些數據的實例數
我想要做的是顯示一個特定的網址和它被點擊的次數,然後用戶可以通過點擊來揭示所有這些網址被點擊的具體時間。
我不是sql專家,但這聽起來像我需要最初顯示所有不同的網址後面跟着一個子查詢,它顯示了這個特定網址的所有條目。
我在想這個還是有一個更簡單的方法嗎?
需要考慮的一件事是使用兩個表格 - 一個表格包含獨特的網址,另一個存儲點擊信息(或者使用唯一的序列號加入它們,或者url(因爲它是唯一的))
但要回答您的查詢問題 - 是的,我會有一個查詢顯示URL和第二個查詢來獲取特定URL的數據(只有/當用戶請求該信息時)。
類似的東西應該做的伎倆: 第一:
SELECT urlclicked,
COUNT(*)
FROM urltracker
GROUP BY urlclicked
然後當用戶點擊一些鏈接:
SELECT id,
urlclicked,
referrer,
timestamp
FROM urltracker
WHERE urlclicked = ?clickedUrl
顯示詳細信息。
你應該能夠做這樣的事情讓每個URL的總數:
SELECT urlclicked, COUNT(urlclicked) AS total
FROM urltracker
GROUP BY urlclicked
這是你所追求的?
是的,在某種程度上ü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次,每次網址被點擊一起顯示所有信息。
我以前做過 - 它運作良好。但它不能很好地擴展。第一個查詢與group by可以在一個年齡一旦有大量的數據在那裏。儘管......並不是一個簡單的方法,但如果要經常查看它,它可能會定期緩存總數。 – benlumley 2008-12-18 11:59:54