Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2010-01-31, 21:45
  #1
Medlem
Kaustis avatar
Jag har en tabell som jag kör följande query på:

Kod:
SELECT countid )
FROM blog_counter
GROUP BY substring
010senaste_besok 

Dock är det någonting som inte riktigt stämmer med resultatet. Antingen är den där queryn felaktig eller så ligger felet nån annanstans. Tabellen jag kör den på ser ut såhär:

Citat:
Tabell
senaste_besok (timestamp)
id (ett id för varje input i tabellen)
[några andra kolumner]

Det jag vill få ut är antal unika besökare per dag under tiden bloggen funnits, men frågan är: gör jag rätt?
Citera
2010-01-31, 22:20
  #2
Medlem
Testa med:
select count(distinct(id))
Citera
2010-01-31, 23:22
  #3
Moderator
Protons avatar
är det en unix_timestamp du har, eller vad är det för nåt? Dessutom undrar jag vad för databas du kör? Är det Mysql eller vad? Rent spontant tror jag inte att den där funkar som du har tänkt dej tyvärr, men det är som sagt beroende på vad timestamp är för nånting.
Citera
2010-01-31, 23:34
  #4
Medlem
Mys-Hitlers avatar
Parametrarna till SUBSTRING() ser konstiga ut. Fel ordning?
Citera
2010-02-03, 13:43
  #5
Medlem
flazbazs avatar
Förmodligen är "någon av de andra kolumnerna" en kolumn som innehåller användarnamnet. Så i substring, byt ut senaste_besök mot det kolumnnamnet så borde det funka.
Citera
2010-02-03, 22:37
  #6
Medlem
Nattskenets avatar
Citat:
Ursprungligen postat av Kausti
Jag har en tabell som jag kör följande query på:

Kod:
SELECT countid )
FROM blog_counter
GROUP BY substring
010senaste_besok 

Dock är det någonting som inte riktigt stämmer med resultatet. Antingen är den där queryn felaktig eller så ligger felet nån annanstans. Tabellen jag kör den på ser ut såhär:



Det jag vill få ut är antal unika besökare per dag under tiden bloggen funnits, men frågan är: gör jag rätt?

Du vill nog för det första få ut datumet i resultatet också, det är ditt första fel.

Ditt andra fel är att substring-kommandot är fel i SQL-frågan.

Så om du nu använder MySQL bör följande SQL-fråga fungera:

Kod:
SELECT substring(senaste_besok110) AS datumetcountid )
FROM blog_counter
GROUP BY datumet 
Citera
2010-02-04, 13:55
  #7
Medlem
Kaustis avatar
Okej, en jäkla massa information jag glömde skicka med. Men jag ska försöka göra om och göra rätt:

Först och främst använder jag mig av MySQL, sen ser min tabell ut såhär:

Citat:
Id | Time | Ip
1 | 2009-01-01 13:37:00 | 127.0.0.1
2 | 2009-01-01 18:51:11 | 127.0.0.1
3 | 2009-01-01 13:40:00 | 138.14.14.32
4 | 2009-01-03 13:37:00 | 127.0.0.1
5 | 2009-01-05 13:37:00 | 127.0.0.1
6 | 2009-01-05 13:37:00 | 17.0.15.1
7 | 2009-01-05 01:17:00 | 17.0.15.1

Nu vill jag alltså räkna ut hur många unika besökare (unika IPn) jag haft per dag från dom där raderna. Resultatet jag vill ha är alltså 5 från dom där raderna (detta eftersom 127.0.0.1 har besökt sidan 2 gånger under 2009-01-01 och 17.0.15.1 har besökt sidan 2 gånger under 2009-01-05).

Min förklaring är typ kass, men någon hjälte därute kanske förstår vad jag försöker säga?
Citera
2010-02-04, 13:57
  #8
Medlem
Nattskenets avatar
Citat:
Ursprungligen postat av Kausti
Okej, en jäkla massa information jag glömde skicka med. Men jag ska försöka göra om och göra rätt:

Först och främst använder jag mig av MySQL, sen ser min tabell ut såhär:



Nu vill jag alltså räkna ut hur många unika besökare (unika IPn) jag haft per dag från dom där raderna. Resultatet jag vill ha är alltså 5 från dom där raderna (detta eftersom 127.0.0.1 har besökt sidan 2 gånger under 2009-01-01 och 17.0.15.1 har besökt sidan 2 gånger under 2009-01-05).

Min förklaring är typ kass, men någon hjälte därute kanske förstår vad jag försöker säga?

Nu har jag inte testat men spontant känns det som att du bara behöver lägga till ip i grupperingen:

Kod:
SELECT substring(senaste_besok110) AS datumetcountid 
FROM blog_counter 
GROUP BY datumet
ip 

Då bör du få ut antal unika besök per dag.
Testa den koden och se om du får det resultat du är ute efter.
Citera
2010-02-04, 15:04
  #9
Moderator
Protons avatar
Jag gör ett försök jag med nu när förutsättningarna är mer klara:

Kod:
SELECT DATE(senaste_besök) AS myDate,COUNT(DISTINCT ip) AS uniques
FROM blog_counter
GROUP BY myDate 
Så nånting borde ju kunna funka?
Citera
2010-02-04, 18:17
  #10
Medlem
Nattskenets avatar
Citat:
Ursprungligen postat av Proton
Jag gör ett försök jag med nu när förutsättningarna är mer klara:

Kod:
SELECT DATE(senaste_besök) AS myDate,COUNT(DISTINCT ip) AS uniques
FROM blog_counter
GROUP BY myDate 
Så nånting borde ju kunna funka?

Petitesser: senaste_besok och inte senaste_besök
Citera
2010-02-04, 18:18
  #11
Medlem
Kaustis avatar
Citat:
Ursprungligen postat av Proton
Jag gör ett försök jag med nu när förutsättningarna är mer klara:

Kod:
SELECT DATE(senaste_besök) AS myDate,COUNT(DISTINCT ip) AS uniques
FROM blog_counter
GROUP BY myDate 
Så nånting borde ju kunna funka?

Det där fungerar riktigt bra Men om jag skulle vilja summera alla uniques nudå? Jag tänkte vara smart och köra SUM(), men det sket ju sig

Kod:
SELECT DATE(senaste_besök) AS myDate,SUM(COUNT(DISTINCT ip)) AS uniques
FROM blog_counter
GROUP BY myDate 

Jag har säkert missat nåt skitlätt, men hur summerar jag alla raderna?
Citera
2010-02-04, 18:54
  #12
Moderator
Protons avatar
Det blir ju konstigt att försöka proppa i en total per rad i ditt resultat i detta fall, speciellt eftersom din SQL är satt att visa unika IP-n per dag. Ett sätt att lösa det på, om än inte så vackert, är att använda variabler som MySQL faktiskt kan deklarera och använda. Nåt sånt här isf:

Kod:
SET @total :=0;

SELECT DATE(senaste_besök) AS myDate,COUNT(DISTINCT ip) AS uniques,@total :=@total+uniqes
FROM blog_counter 
GROUP BY myDate

och sen senare(i samma anslutning då mysql tar bort variabler efter att anslutningen stängts)
Kod:
SELECT @total AS total
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback