Jag loggar besökares aktiviteter på en webbsida (i en Access-databas) och vill kunna lista besökare (per dag och) per domän. Jag har dock bara börjat med att testa per domän och försöker just nu bara få fram unika sessionId och räkna dom.
Jag vill därför kunna välja ut distinkta sessionId, räkna samtliga distinkta sessionId för att få en besökssiffra per dag (och sedan längre ner på sidan kunna lista allt * det som tabellen innehåller, men det är steg två).
Jag får DISTINCT att funka för sig, men inte DISTINCT i kombination med COUNT(*)
Med nedan kod...
SQL = "SELECT DISTINCT sessionId FROM (SELECT COUNT(*) AS noVisitors FROM [tabellen] WHERE viaDomain = '"& domain &"');"
...får jag "Too few parameters. Expected 1"
Vad är det jag missar?
@ndersMedlem sedan juni 200032 969 inlägg Jag vet inte om jag förstår din fråga rätt, men:
SQL = "SELECT DISTINCT sessionId, (SELECT COUNT(*) AS noVisitors FROM [tabellen] WHERE viaDomain = '"& domain &"') FROM [tabellen] WHERE viaDomain = '"& domain &"'"
Om man tolkar din fråga så står det typ:
Hämta fältet sessionid från (7823)
- och det kan ju inte fungera.
mvh
Äh, nu löste jag det. Jag fick vända på raden.
sql = "SELECT COUNT(*) FROM (SELECT DISTINCT sessionId AS noVisitors FROM [tabell] WHERE viaDomain = '"& domain &"');"
@nders skrev:
- och det kan ju inte fungera.
He he, nej det gjorde det ju inte. Jag tänkte knasigt. Ibland hjälper det att posta frågan här och klura på det lite. :p
@ndersMedlem sedan juni 200032 969 inlägg Aha, det var så du menade. Då fattar jag vad du var ute efter i alla fall - jag kanske läste lite kladdigt. :)
Men alltså...om jag nu vill kunna få fram ALLT, *, som finns i min tabell (inte så många saker men bla IP, lang) hur gör jag då för att kombinera detta med ovan?
Jag försökte nu anropa rs("sessionId") i en loop längre ner på sidan för att se om det funkade men, det gjorde det inte.
Item cannot be found in the collection corresponding to the requested name or ordinal.
Lägger man bara till ännu en SELECT (fast då SELECT *) med paranteser i frågan?
*fundersam*
@ndersMedlem sedan juni 200032 969 inlägg Du har ju bara hämtat ut ett antal (som du dessutom inte gett något namn - så du kan bara komma åt den med rs(0).)
sql = "SELECT *, (SELECT COUNT(*) FROM (SELECT DISTINCT sessionId AS noVisitors FROM [tabell] WHERE viaDomain = '"& domain &"')) AS Antal FROM [tabell] WHERE viaDomain = '"& domain &"'"
men frågan är om det inte är bättre att ställa två frågor.
@ndersMedlem sedan juni 200032 969 inlägg Du ville ju hämta allt i din tabell?
Vad vill du egentligen hämta ut?
OK, missförstånd uppenbarligen.
I min tabell finns information som ser ut ungefär såhär:
www.domänen.se 81651469 62.119.248.50 /contact.asp 2007-09-26 10:04:57 sv
www.domänen.se 81651469 62.119.248.50 /products.asp 2007-09-26 10:05:01 sv
www.domänen.info 81651541 136.8.152.13 /default.asp 2007-09-26 10:19:30 sv
www.domänen.info 81651541 136.8.152.13 /contact.asp 2007-09-26 10:20:10 sv
www.domänen.no 81651544 58.247.148.217 /search.asp 2007-09-26 10:21:19 no
5 rader har registrerats i tabellen, men det är ju egentligen bara 3 besökare.
Jag kan idag presentera informationen såhär:
- 2007-09-26: Visitor 81651469 (IP 62.119.248.50) entered via www.domänen.se
10:04:57 /contact.asp
10:05:01 /products.asp
- 2007-09-26: Visitor 81651541 (IP 136.8.152.13) entered via www.domänen.info
10:19:30 /default.asp
10:20:10 /contact.asp
- 2007-09-26: Visitor 81651544 (IP 58.247.148.217) entered via www.domänen.no
10:21:19 /search.asp
Önskemål:
Jag vill kunna känna av att det är just 3 besökare (distinct och count) fastän det är 5 rader, skriva ut detta OCH sedan kunna loopa upp samtlig ovan information (på ett ungefär) med en och samma SQL-fråga.
Jag kan ju få det att funka genom två frågor, men det måste väl gå med en?