webForumDet fria alternativet

SUM (tror jag...)

10 svar · 304 visningar · startad av Eclipse

EclipseMedlem sedan juli 20003 741 inlägg
#1

http://www.w3schools.com/sql/sql_groupby.asp

På denna sidan finns lite kod som jag tänkte man kunde ha i en TOP 10 most wanted links.

[clickCounter]
intID
dteCreated
intFaqID

Var börjar jag?? Jag vill ha de tio mest besökta länkarna den senaste veckan...

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Varför sum?

select top 10 * from links order by clickCounter desc

eller hur ligger saker lagrade?

EclipseMedlem sedan juli 20003 741 inlägg
#3

Det där kommer att bli fel!

TOP 10 betyder de 10 översta posterna! Om folk klickat på en länk 11 gånger kommer de 10 första posterna enbart innehålla pekare (intFaqID) till samma post... No good!

***
Så här är uppgiften på Svenska:

Sammanställ antalet träffar den senaste veckan. Lista varje post som fått flest träffar en gång, samt räkna gärna ut hur många träffar en viss post fick...

Alltså, varje gång man klickar på en länk skapas en ny INSERT INTO.

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Jo, jag anade att det låg åt det hållet

select top 10 intfaqid,count(*) from clickcounter group by intfaqid order by 2 desc
EclipseMedlem sedan juli 20003 741 inlägg
#5

Det ser bättre ut. Jag återkommer...

Jag har också ett förslag som innehåller count.

EclipseMedlem sedan juli 20003 741 inlägg
#6
'SQL = "SELECT TOP 10 cc.intFaqID, COUNT(*) FROM clickCounter cc GROUP BY intFaqID ORDER BY 2 DESC;"
'SQL = "SELECT TOP 10 cc.intFaqID, COUNT(*) FROM clickCounter cc GROUP BY cc.intFaqID ORDER BY 2 DESC;"
'SQL = "SELECT TOP 10 cc.intFaqID, COUNT(*) FROM clickCounter cc GROUP BY cc.intFaqID ORDER BY 2 DESC;"
SQL = "SELECT TOP 10 cc.intFaqID, COUNT(*), faq.x_ID FROM clickCounter cc, faq GROUP BY cc.intFaqID ORDER BY 2 DESC;"

Nej du... jag får inte i hop det när man blandar in ytterligare en tabell. DSessutom visas inte alls TOP 10 utan alla poster uppfyller kriteriet...

LarsGMedlem sedan dec. 200012 465 inlägg
#7

Alla kolumner i select-listan (som inte ingår i en aggregatfunktion (count, sum etc)) måste vara med i group by.

Top fungerar så att den även tar med de som är lika (med avseende på det som finns i order by)

Om du har 1000 länkar och 9 har visats 2 gånger och de övriga 1 gång, så kommer du att få med alla poster. Så är det i Access-världen. Lägg till en extra kolumn i order by

SQL = "SELECT TOP 10 cc.intFaqID, COUNT(*) FROM clickCounter cc GROUP BY intFaqID ORDER BY 2 DESC, 1"
EclipseMedlem sedan juli 20003 741 inlägg
#8

Det här blir ju fan bara värre och värre... Ingenting fungerar ju längre!

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'intFaqID WHERE dteCreated > #2002-09-09 16:42:11#'.

/top_10.asp, line 32

SQL = "SELECT TOP 10 intFaqID, COUNT(intFaqID) FROM clickCounter  " _
&  " GROUP BY intFaqID WHERE dteCreated > #" & dateAdd("w", -1, now()) & "# ORDER BY 2 DESC, 1;"
LarsGMedlem sedan dec. 200012 465 inlägg
#9

group by skall vara efter where och före order by

EclipseMedlem sedan juli 20003 741 inlägg
#10

OK, deal!

Jättebra!

***
SQL = "SELECT TOP 10 cc.intFaqID, COUNT(cc.intFaqID), faq.x_subject FROM clickCounter cc, faq " _
& " WHERE cc.dteCreated > #" & dateAdd("w", -1, now()) & "# AND " _
& " cc.intFaqID = faq.x_ID GROUP BY cc.intFaqID ORDER BY 2 DESC, 1;"

***
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'x_subject' as part of an aggregate function.

/top_10.asp, line 36

Jag blir helt galen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Jag har testat lite olika varianter men det går ju inte att få med en post från den andra tabellen!!! Det MÅSTE ju bara funka!!

LarsGMedlem sedan dec. 200012 465 inlägg
#11

Alla kolumner i select-listan (som inte ingår i en aggregatfunktion (count, sum etc)) måste vara med i group by.

SQL = "SELECT TOP 10 cc.intFaqID, COUNT(cc.intFaqID), faq.x_subject FROM clickCounter cc, faq " _ 
& " WHERE cc.dteCreated > #" & dateAdd("w", -1, now()) & "# AND " _ 
& " cc.intFaqID = faq.x_ID GROUP BY cc.intFaqID,faq.x_subject  ORDER BY 2 DESC, 1"
Genererad på 370 ms · cache AV · v20260730165559-full.f96bc7eb