![]() |
Har stött på ett problem som egentligen borde vara ganska lätt men har nog trasslat till det ganska mkt för mig själv i mina tankar att det står helt still.
Låt säg att jag har en tabell som ser ut såhär: pID ENTRY 1 1 2 0 1 1 1 0 1 1 2 1 2 0 2 0 Jag vill nu veta vilket pID som har flest ENTRY, allt i samma SQL sats. Visst kan man köra en COUNT(entry) fast det går ju bara på enskilda poster. Jag vill alltså ha det pID ligger etta på topplistan. Här har pID 1 tre st entry 1 och pID 2 ett stycke entry 1, om ni förstår? Funktionen tabellen, har bara klistrat in en liten del av den här, är att räkna sidträffar. värde 1 står för att sidan är ingångssida och 0 för ja inte ingång. Jag vill nu kunna presentera vilken sida som fungerat som ingångssida flest antal gånger. Tacksam för hjälp. (Fick inte till tabbarna i tabellen men ni lär nog fatta att det sista värdet i posten tillhör entry ; ;) ) |
tror du får göra det med flera sql-frågor...
först gå igenom varje olika pID,, köra en count på det för Entry och se om det är högre än föregående count... jag skulle göra det så här.. sql = "select distinct pID from TABLE order by pID asc" set rs = conn.execute(sql) antal = 0 do while not rs.eof sql = "select count(*) as antal from TABLE where pID = " & rs("pID") set rs2 = conn.execute(sql) if rs2("antal") > antal then Rank1_pID = rs("pID") rs.movenext loop response.write "Den som har fungerat som ingångssida flest gånger är " & Rank1_pID & vbCrLf |
Kan du inte bara köra count/group såhär?
select pid, count(*) as antalentries from table group by pid order by antalentries desc Då får du ju en sammanställning på hur många entries varje pid har, sorterat nedåtgående på antal entries. Är inte 100 på att "order by antalentries desc" fungerar i MySQL, men såifall får man nöja sig med de två första raderna och sedan sortera manuellt i en array. Är ju dumt att köra flera statements när man kan göra det med ett. :) |
Detta beror lite på vilken version du har av mySQL. Men här är ett förslag du kan testa fungerar de inte så gör du bara om hela frågan till en nestad sökning.
SELECT pID, COUNT(entry) as antalhits FROM table GROUP BY pID ORDER BY antalhits DESC |
Tack så j***a mycket för era svar! Har verkligen klurat på detta jättelänge och äntligen har jag fått lösningen!
Ha de gött gubbar! |
Alla tider är GMT +2. Klockan är nu 08:11. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson