webForumDet fria alternativet

räkna och sortera

ASP

21 svar · 384 visningar · startad av aleborg

Medlem sedan jan. 20013 341 inlägg
Frågan#1

Jag är helt hjärndöd idag!
Jag håller på ett forum där man ska kunna sortera efter antal forum/inlägg

Så här ser koden ut idag:

SQL="Select * From DevForum Where ForumBel IS NULL Order By "& Session("sort2")
Set forum=Conn.Execute(SQL)
Do Until forum.EOF
Set number = Conn.Execute("Select COUNT(ForumID) AS cnt FROM [DevForum] WHERE [ForumBel] ="& forum("ForumID") &";")
antal= number("cnt")

Session("sort2") innehåller oftast ett kolumnnamn.

Hur ska jag skriva för att sorteringen ska ske via antal?

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

Medlem sedan jan. 20013 341 inlägg
#2

Någon som vet?

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

Medlem sedan dec. 19996 721 inlägg
#3

Hur ser tabellerna ut? Vilken information vill du ha ut (inte * väl)? Det går antagligen att göra allt med en SQL-sats.

Medlem sedan jan. 20013 341 inlägg
#4

Jo, behöver ha ut allt ifrån tabellerna!
Och tanken är att man ska kunna sortera forum efter antal subforum.

Så här e det uppbyggt:
För forum:

DevForum
--ForumID
--ForumName - namn på forumet
--ForumBel - om detta är tomt så är forumet ett "huvudforum" annars så är det ett subforum och innehåller då ID nummret till det forum det tillhör.

Jag har en sida som ser ut ung. så här:

-Forum1 -- 3 st
-Forum2 -- 5 st
-Forum3 -- 2 st

där sista delen är antal subforum.

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

Medlem sedan jan. 20013 341 inlägg
#5

någon?

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

Medlem sedan dec. 200012 464 inlägg
#6
select ForumID,ForumName,ForumBel,count(*) as antal
from devtopics
group by ForumID,ForumName,ForumBel
order by 4 desc

------------------
essentitia preter non sans multiplicandum

Medlem sedan jan. 20013 341 inlägg
#7

Hmmm, jag hänger inte riktigt med i din SQL sats nu :(

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

Medlem sedan dec. 200012 464 inlägg
#8

För varje unik kombination av
ForumID,ForumName,ForumBel
så tar man fram antalet förekomster i tabellen och sorterar resultatet fallande efter detta värde.

------------------
essentitia preter non sans multiplicandum

Medlem sedan jan. 20013 341 inlägg
#9

men "order by 4 desc" ???

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

Medlem sedan dec. 200012 464 inlägg
#10

order by 4 desc

innebär att man sorterar med avseende på fjärde uttrycket i select-listan, dvs count(*)

Egentligen så skall man kunna skriva


order by antal desc

men det verkar vara problem att använda den konstruktionen i Access.

------------------
essentitia preter non sans multiplicandum

Medlem sedan jan. 20013 341 inlägg
#11

Använder SQL Server :)

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

Medlem sedan dec. 200012 464 inlägg
#12

Ok, då skall det vara lugnt att använda


order by antal desc

------------------
essentitia preter non sans multiplicandum

Medlem sedan jan. 20013 341 inlägg
#13

Problemet är att count måste räkna ut hur många subforum som finns till varje forum dvs hur många finns det som har ForumBel=ForumID.

SQL="Select * From DevForum Where ForumBel IS NULL Order By "& Session("sort2")
Set forum=Conn.Execute(SQL)
Do Until forum.EOF
Set number = Conn.Execute("Select COUNT(ForumID) AS cnt FROM [DevForum] WHERE [ForumBel] ="& forum("ForumID") &";")
antal= number("cnt")

Den här koden fungerar men man skulle behöva kombinera dom

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

Medlem sedan dec. 200012 464 inlägg
#14
sql = "select forumid,count(ForumBel) as cnt from DevForum group by forumid order by cnt desc"

Set forum=Conn.Execute(SQL)
Do Until forum.EOF
antal= forum("cnt")

------------------
essentitia preter non sans multiplicandum

Medlem sedan jan. 20013 341 inlägg
#15

Problemet är att jag bara ska visa dom där "ForumBel IS NULL" och sortera dom efter hur många subforum dom har, subforumen finns i samma tabell men har i ForumBel id numret till det forum som dom till hör(ett subforum däremot kan inte innehålla ytterligare subforum)

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

Medlem sedan dec. 200012 464 inlägg
#16
select forumbel,count(*) as cnt from devforum
where forumbel is not null group by forumbel order by cnt desc

Nu får du inte med de forum som saknar subforum.

------------------
essentitia preter non sans multiplicandum

Medlem sedan jan. 20013 341 inlägg
#17

nu får jag bara fram subforumen :e och dom skulle bara räknas ;)

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

Medlem sedan jan. 20013 341 inlägg
#18

någon som har nån idé hur man kan lösa det??

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

Medlem sedan dec. 19996 721 inlägg
#19
SELECT f1.ForumID,f1.ForumName,COUNT(f2.ForumID) AS cnt FROM devforum f1
LEFT OUTER JOIN devforum f2 ON f1.ForumID=F2.ForumBel
WHERE F1.ForumBel IS NULL
GROUP BY f1.ForumID,f1.ForumName
ORDER BY cnt DESC

------------------
/emission
If you see someone without a smiley, give them your colon.

Medlem sedan jan. 20013 341 inlägg
#20

TACK emission, du kungen :e
Hur ska jag göra för att få samma funktion fast räkna efter antal som finns i en annan tabell?

Varje subforum har ett antal inlägg i Devtopics förenade genom att i Devtopics så finns ForumBel som innehar ID numret till det forum det tillhör, idag ser det ut så här:

SQL="Select * From DevForum Where ForumBel="& forum("ForumID") &" Order By "& Session("sort2")
Set subba=Conn.Execute(SQL)
Do Until subba.EOF
Set number = Conn.Execute("Select COUNT(TopicID) AS cnt FROM [DevTopics] WHERE [ForumBel] ="& subba("ForumID") &";")
ant= number("cnt")

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

[Redigerat av aleborg den 25 sep 2001]

276 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)