mysql count and gruop by

ghostbg

Registered
от 1 час се мъча в phpmyadmina да направя заявка която да ми изважда колко пъти е посещавана дадена страница за ден. Ползвам на jooorooo един стар web agent и искам да го upgrade малко :D той записва следните полета.

Код:
id  	int(11) 
	ip 	varchar(30)
	counter 	int(11) 
	data 	varchar(30)
	adres 	text 
	brouser 	varchar(255)
	info1 	varchar(200)
	info2 	varchar(200)
	img 	varchar(250)

и искам mysql заявките който да изкарват даден адрес колко пъти е посещаван за днес, вчера и т.н.
 
що не си земеш направо 1 брояч от интернет, та изкаш с mySql да си го направиш
 
Какво се записва в counter? За всяко посещение имаш отделен ред и цифра 1 или в counter ти е примерно число 423 и при следващото посещение 424? Също така искаш да изкарва примерно сайт 1 посетен вчера 100 пъти, днес 102 пъти или само за текущия ден? Или за няколко сайта?
 
значи това counter съм го добавял аз преди време и не записва нищо.
в това поле adres се записват пътищата на посетените страници примерно

site.com/file.php
site.com/drundrun.php и т.н искам да изваждам колко пъти е посетен този адрес site.com/file.php днес примерно, както и другите адреси.

нещо такова да изкарва mysql-a

Код:
url                               pose6teniq       den

site.com/file.php               299       12/07/2009
site.com/drundrun.php    9       12/07/2009
site.com/blabla.php          49       12/07/2009
site.com/haaha.php          100       12/07/2009
 
Пробвай с това, но без да си направя същата таблица не мога да ти гарантирам, че това, което ти давам работи :) А сега ме мързи малко да си правя тестова таблица :) Нищо не пречи да пробваш :)

SELECT count(adres) as count, и другите полета FROM table GROUP BY data, adres
 
не стана извади това

Код:
count 	ip 	data 	
1 	75.71.161.136 	1/1/2008 0:21:25 	
1 	89.215.128.178 	1/1/2008 11:30:00 	
1 	212.72.214.171 	1/1/2008 11:50:43

за всеки един запис

аз се пробвах така group by day(data) понеже съм чувал че става така когато датата ми е записана по timestamp но не се получава
 
С тази заявка вади това
Код:
count 	data 	                  adres
4 	20/11/2007 3:04:00 	[BLOB - 32 байта]
1 	21/4/2007 21:21:34 	[BLOB - 41 байта]
18 	22/4/2007 12:10:35 	[BLOB - 38 байта]
 
Код:
SELECT adres, count(*) as count, DATE_FORMAT(data,'%m/%d/%Y') FROM table GROUP BY adres, DATE_FORMAT(data,'%m %d %Y')

Опитай така

ПС: ся се сетих, че DATE_FORMAT изисква формат yyyy-mm-dd h:m:s
 
Връща това

Код:
adres 	  count 	  DATE_FORMAT(data,'%m/%d/%Y')
[BLOB - 32 байта] 	4 	NULL
[BLOB - 41 байта] 	1 	NULL
[BLOB - 38 байта] 	18 	NULL
[BLOB - 58 байта] 	1 	NULL
[BLOB - 52 байта] 	1 	NULL

Код:
adres    	  count 	  DATE_FORMAT(data,'%Y/%m/%d')
[BLOB - 32 байта] 	4 	NULL
[BLOB - 41 байта] 	1 	NULL
[BLOB - 38 байта] 	18 	NULL
[BLOB - 58 байта] 	1 	NULL
 
Код:
SELECT ip, count(*) as count, MID(data,1,10) as data FROM table GROUP BY ip, MID(data,1,10)

Объках полетата adres с IP
PS: Записвай датата с водещи нули за двуцифрени числа защото така ако месеца и деня са едноцифрени участва и първата цифра от часа...
 
сега вади това и като му дам order by data тези числа след годината на някои записи го бърка и няма как да започна да записвам датата така 01-05-2009 защото имам записи от 2 години вече

Код:
adres 	count 	data
[BLOB - 38 байта] 	2 	12/4/2007
[BLOB - 38 байта] 	4 	12/5/2007
[BLOB - 38 байта] 	2 	14/6/2007
[BLOB - 44 байта] 	1  	1/5/2007 0
[BLOB - 44 байта] 	2 	1/5/2007 1
[BLOB - 44 байта] 	1 	1/5/2007 2
[BLOB - 44 байта] 	1 	1/5/2007 8
 
UPDATE table SET data = concat('0', data) WHERE data LIKE '_/%'

Това май те оправя :?:
Добавя една 0 в началото на дати които имат само 1 знак преди първата наклонена черта :)
 
и това не помогна .. пак не зачита day(data) и сега забелязах че датата се записва в varchar и се взима так $data = date("j/n/Y G:i:s");
 
Такова нещо day(data) няма. Има DATE_FORMAT
Изпълни еднократно тази заявка:
Код:
UPDATE table SET data = concat('0', data) WHERE data LIKE '_/%'
След това започваш да записваш датата така:
Код:
$data = date("d/m/Y H:i:s");
а си вадиш резултатите с тази заявка:
Код:
SELECT ip, count(*) as count, MID(data,1,10) as data FROM table GROUP BY ip, MID(data,1,10)
Направих си същата таблица като твоята, добавих записи, тествах и няма грешка :?:
 

Back
Горе