Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


X:e flest poster

Postades av 2005-05-03 21:43:24 - Jakob O., i forum asp - allmänt, Tråden har 12 Kommentarer och lästs av 743 personer

Önskar göra ett skript som utifrån databas tar reda på hur du ligger placerad i en "topplista" med flest poster. Låt oss säga att alla medlemmar har ett ID och alla meddelanden på sidan bestäms vem som äger dom utifrån den medlems ID som finns i meddelandetabellens fält "refID".

det går lätt att köra en "count(*) from messages Where refID = " & memberID & " och få reda på hur många meddelanden en viss medlem har i sin inkorg, men vad jag nu vill få fram är t.ex. "du har 142 meddelanden. du är den medlem med 3:e flest meddelanden på sidan" (eftersom det finns två andra medlemmar som har 167 respektive 873 meddelanden).

Hur kan man smidigt jämföra mot andra counts? sortera counts på något sätt och ta reda på vilket slip-nummer man hamnade på typ?

Tacksam för alla sorters svar
Mvh / Jakob


Svara

Sv: X:e flest poster

Postades av 2005-05-03 21:56:58 - Johan Svensson

Tjena,

Enklast är att lägga till ORDER BY och sedan kan du helt enkelt mata ut hela listan sorterad. Lägger du nu till ett löpnummer i en egen kolumn först så har du det hela klart.

// Johan


Svara

Sv:X:e flest poster

Postades av 2005-05-03 22:13:38 - Jakob O.

köra en ORDER BY på count-svaret? Sen vill jag inte skriva ut en hel lista utan bara skriva ut svaret på den inloggade medlemmen. Antar att det kanske ska se ut något såhär? ska testa...

Addera = "Select refID, count(*) From messages GROUP BY refID ORDER BY 2 desc"
RS.Open Addera, Conn, 3, 3

nr = 0
Do Until RS.EOF
nr = nr+1

If refID = " & memberID & " Then
Response.Write "Du har " & RS(1) & " meddelanden, " & nr & ":e flest meddelanden bland alla medlemmar"
End If

RS.MoveNext
Loop


Svara

Sv: X:e flest poster

Postades av 2005-05-03 22:28:53 - Sara Winter

Det låter väl rimligt att göra på det viset, men istället för att skriva do until rs.EOF, som gör att den kör igenom alla poster varje gång så kan du skriva:

nr = 0
Do Until <b>MemberReached = 1 OR</b> RS.EOF
nr = nr+1

If refID = " & memberID & " Then
Response.Write "Du har " & RS(1) & " meddelanden, " & nr & ":e flest meddelanden bland alla medlemmar"
<b>MemberReached = 1
Else
MemberReached = 0</b>
End If

RS.MoveNext
Loop

På det viset kör den inte genom hela rs:en om man ligger etta.

PS.
En kul idé:
Om medlemmen är etta kan du skriva
Response.Write "Du har " & RS(1) & " meddelanden, du har FLEST meddelanden bland alla medlemmar"
eller om medlemmen är sist (if rs.EOF then)
Response.Write "Du har " & RS(1) & " meddelanden, du har MINST meddelanden bland alla medlemmar"
eller någonting i den stilen


Svara

Sv: X:e flest poster

Postades av 2005-05-03 23:08:38 - Johan Svensson

Tjena,

Jo det var ungefär så jag menade. Grejen är att nu har du en lång lista som du loopar igenom. Nästa steg är att skapa en temptabell med ett idnetity fält där du sedan skickar in din data inklusive user id. Sedan tar du "select bla bla where userid = X" och slutligen droppar du din temp tabell.

På så sätt så sker all körning i databasen, vilket förhoppningsvis är snabbare än din kodloopning.

// Johan


Svara

Sv:X:e flest poster

Postades av 2005-05-03 23:23:07 - Jakob O.

Tack för tipset Sara! Har fått ett problem nu tyvärr. Behöver få in fältet 'status' och 'datum' i sql'n också och lägga till WHERE status = 'unread' AND datum > #2005-01-01 00:00:00# men får en massa felmeddelanden. Hur ska det skrivas?

Johan: temptabell? hajar inte riktigt! Går det att få in fler fält då som jag beskrivit ovan? Kan du ge ett exempel på hur det skulle se ut? Är det istället för det jag och Sara varit inne på eller en komplettering?


Svara

Sv: X:e flest poster

Postades av 2005-05-03 23:52:45 - Johan Svensson

Jakob,

Jag kan visa ett exempel som funbkar på MS SQL server, men jag kan inte testa på access eftersom jag inte har access installerat. Dock är principen densamma. Så om du vill ha ett exempel som du själv får jobba med at "överstätta" så hojta till.

// Johan


Svara

Sv:X:e flest poster

Postades av 2005-05-03 23:54:43 - Jakob O.

Ja det tar jag gärna emot.. det är ju inte så värst stora skillnader. Löser det mitt problem med att lägga WHERE-sats på fler fält?


Svara

Sv: X:e flest poster

Postades av 2005-05-03 23:59:12 - Johan Svensson

Tjena igen,

Det skall inte vara något problem att fixa flera kriterier i din WHERE sats. Jag fixar exempel. Få se hur långt jag orkar ikväll annars kommer det sent imorgon kväll...

// Johan


Svara

Sv: X:e flest poster

Postades av 2005-05-04 00:00:38 - Pelle Johansson

select userid, namn, (select count(1) from tabell where userid = tabell.userid ) as antal
from tabell
order by antal desc

Att sedan få en ranking är ganska stökigt med ett anrop eftersom du måste köra igenom frågan på samtliga användare och det är därför tidskrävande. Så som nämns tidigare, skapa antingen en temptabell eller en trigger som lägger upp aktuell status per användare eller liknande för att snabbt bygga ett rankingsustem.


Svara

Sv:X:e flest poster

Postades av 2005-05-04 00:32:10 - Jakob O.

Får fortfarande inte till det med den SQL som du gav mig Pelle. Detta var vad jag försökte göra vilket absolut inte fungerade... försökte plocka ut en count på antalet poster där 'aktiverat' är senare än 2005-05-04 00:00:00 och status = 'aktiverat' samt binda denna count till unika medlemmar med GROUP BY userID och slutligen sortera det och kolla vad den inloggade medlemmen blev rankad som (sessionsID't finns i variabeln 'Vid')

Set RS = Server.CreateObject("ADODB.Recordset")
Addera = "Select userID, status, aktiverat, count(*) From varvningar WHERE status = 'aktiverat' AND aktiverat > #2005-05-04 00:00:00# GROUP BY userID ORDER BY 2 desc"
RS.Open Addera, Connect, 3, 3

nr = 0
Do Until MemberReached = 1 OR RS.EOF
nr = nr+1

If clng(RS(0)) = clng(Vid) Then
Response.Write "Du har värvat " & RS(3) & " medlemmar och ligger på plats " & nr & "!"
MemberReached = 1
Else
MemberReached = 0
End If

RS.MoveNext
Loop


Svara

Sv: X:e flest poster

Postades av 2005-05-04 00:54:07 - Johan Svensson

Hej,

Nu har jag lärt mig en ny sak...att inte ge mig in på saker alldeles för sent på kvällen eftersom jag inte kan sluta...

Nåväl, jag hade på känn att MS Access inte funkar exact lika som MS SQL server så jag var ju tvungen att köra in Access för att kunna ge ett bra exempel... Nedan följer principerna i grova drag med lite exempel, men vad jag inte får till är att kunna stacka flera anrop mot MS access i ett svep så du får nog köra frågorna en och en...

Jag har utgått från följande tabellstruktur:
refID tal
Meddelande Text
status Text
Datum Datum/tid

då kör jag först
<code>
create table temp (
ID counter,
refid integer,
antal integer
);
</code>
för att skapa en tillfällig tabell (det får bli en semitemporär tabell eftersom jag inte hittar exakt hur temp tabeller funkar i access). Sedan så kör vi:
<code>
insert into temp (refid, antal)
Select refID, count(refid) From messages WHERE status = 'unread' and datum > #2005-05-01# GROUP BY refID ORDER BY 2 desc
</code>
för att få in lite data. Här har jag angett dina sökkriterier och eftersom jag har en counter (identity, autonumner, räknare eller vad du vill kalla den) i tabellen så får jag automatiskt ett löpnummer som följer sorteringen på datat jag skickar in. Nu vill jag ha ut data för en specifik användare:
<code>
select * from temp where refid = 67
</code>
och slutligen så måste jag städa bort tabellen jag skapade:
<code>
drop table temp
</code>

Du har lite jobbkvar själv med att kunna exekvera alla anropen och att få in de olika fälten du behöver osv. Men dessa exempel ovan har jag testat och fungerar rakt av.

Lycka till!

// Johan



Svara

Sv:X:e flest poster

Postades av 2005-05-04 01:25:13 - Jakob O.

tack för all hjälp.. har till slut fått till det :)


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 602
27 953
271 705
5 875
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies