請看看這個查詢:MySQL查詢的非常複雜的結構化
SELECT DATE(datetime), COUNT(1) as numVisits
FROM ".table_stats."
WHERE type='profile_visit'
AND user_url = '".$_GET['ref']."'
AND id_user='".$_SESSION['user_code']."'
GROUP BY DATE(DATE_SUB(datetime, INTERVAL 1 DAY))
此查詢計算的次數是型等於「profile_visit」每個日期,結果它給了我兩行(DATE(datetime),numVisits)。這是表table_stats的屏幕截圖: Table_Stats
好了,到現在爲止,你可以知道每一位用戶來到一個新元素插入的表類型的網站時 = profile_visit和datetime字段與訪問的日期和時間,這就是爲什麼我使用GROUP BY DATE(日期時間)來計算一天中的總訪問數。
來了複雜的部分,當類型字段等於「點擊」和起源是「小鬼」就意味着,用戶點擊頁面上的特定按鈕,我會想知道如何很多時候該按鈕被點擊(不管ip),就像我在配置文件訪問時一樣。
我只能通過日期時間時型是「點擊」和起源是「小鬼」分組做兩個querys,一個知道的總次數(如一個前)和另一個相似。
問題是,我只想在一次調用中進行此操作,以計算NumVisits這一行中按日期訪問的總訪問次數,並將新行命名爲NumClick,並獲得所有點擊次數。這就是爲什麼我不想在我的PHP服務器上進行更多的計算,如果它可能會很好,使所有在SQL服務器上的計算。
所以最後,如果調用此查詢表:
SELECT DATE(DATETIME) , COUNT(1) AS numVisits
FROM stats_ram
WHERE TYPE = 'profile_visit'
AND user_url = 'xxx'
AND id_user = '88e91'
GROUP BY DATE(DATE_SUB(DATETIME, INTERVAL 1
DAY))
LIMIT 0 , 30
您將獲得:
DATE(datetime) numVisits
2011-11-16 7
我如何添加其他行與總類型=點擊和產地= IMP由DATE製作(日期時間)?
感謝您的幫助!第一
第一件事,請不要在你的SQL直接使用$ _GET ... –
不要擔心安全問題,這只是一個例子 – DomingoSL
@DomingoSL:插值'$ _GET'直接進入的聲明表明有是代碼的其他問題,比如你根本沒有使用準備好的語句插入值。 – outis