Avatar billede vagn16 Nybegynder
27. november 2000 - 14:53 Der er 17 kommentarer og
1 løsning

count og group/order by count (sql)

Hej !

Sort snak ???

Det jeg vil, og har prøvet - nu til døde, er at:

Lave en liste der angiver navne på de kategorier der er i feltet kategori, samt angive hvor mange der er under den enkelte kategori og sortere dem således at den kategori men højeste antal bliver listet øverst !

Altså et resultat hvor jeg får:

Kategori  (antal)

muskler  (5)
tænder  (3)
næse  (2)

Hele 3 ting på én gang - det går virkelig ikke !

Jeg har være ude i noget i den har retning:

    SQL2 = \"select kategori, count(kategori) as total, from spm group by kategori order by total desc\"

Men det giver ikke noget...

Giver det noget mening ???

vh

vagn / 16
Avatar billede sone Nybegynder
27. november 2000 - 14:56 #1
, for meget efter total
Avatar billede vagn16 Nybegynder
27. november 2000 - 15:36 #2
Jeg får:

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
Avatar billede sone Nybegynder
27. november 2000 - 16:22 #3
Prøv i første omgang at fjerne din ORDER BY
Avatar billede vagn16 Nybegynder
27. november 2000 - 16:29 #4
Nu får jeg ikke nogen fejl !

Den giver mig en liste der ser god nok ud... men den sorterer vel ikke efter count nu vel ?

Og jeg kan heller ikke få den til at skrive count med:

response.write total

- er det fordi der er flere counts ?

Den skal jo tælle for hver kategori;

muskler 
tænder 
næse 

vh

vagn

Avatar billede sone Nybegynder
27. november 2000 - 16:32 #5
Du gør følgende:

SQL2 = \"SELECT * FROM (..din SQL...) ORDER BY total DESC\"

Når du skal udskrive totalen, skal du vel bruge RS(\"total\") (hvis dit record set er RS)
Avatar billede ubbe Nybegynder
27. november 2000 - 16:41 #6
Hvis din tabel ser sådan her ud:

Kategori      Antal
muskler      5
tænder        3
næse          2

Så kan du jo bare liste dem sådan her:

<%
Sql = \"SELECT * FROM tabel order by antal\"
Set Sql = Conn.Execute(Sql)
%>

<% Do while not Sql.EOF %>

<%=Sql(\"kategori\")%>
<%=Sql(\"antal\")%>

<%
Sql.Movenext
Loop
%>

Og så husk lige at lave feltet i db\'en hvor antal står i om til et tal felt.... :-)

Det skulle virke...
Avatar billede ubbe Nybegynder
27. november 2000 - 16:45 #7
Ups havde ikke opdateret (sorry sone) ;-)

FAktisk det samme som jeg skrev/du skrev....

whatever han fatter det nok :-)
Avatar billede vagn16 Nybegynder
27. november 2000 - 16:56 #8
Nej...

Jeg har et felt \"kategori\" heri indsættes kategorinavne, mund, tænder, etc.

Hvis der er 4 records under mund, og kun 2 under tænder skal mund listes først og der skal stå hvor mange records der er (4). Derfor skal der laves en count løsning...

Altså der tælles hvor mange af de enkelte navne i feltet \"kategori\" der eksisterer, og de skal kun vises en gang - altså ingen dubletter, og derefter skal de sorteres efter hvor mange der er...

???

vh

vagn
Avatar billede ubbe Nybegynder
27. november 2000 - 17:01 #9
Er det en slags afstemning eller er det bare noget du går ind i db\'en og bestemmer at der skal være 4 ved mund og 2 ved tænder...

eller hvad?????
Avatar billede vagn16 Nybegynder
27. november 2000 - 17:07 #10
øhhh nej... der bliver lagt artikler ind, nogen om mund, andre om tænder dette sker løbende, der er altså ikke altid 4 af en bestemt !

vagn
Avatar billede ubbe Nybegynder
27. november 2000 - 17:12 #11
Dvs at antal er noget den selv skal tælle..

Så tror jeg at JEG har fattet det!! :-)
Kigger lige på det!
Avatar billede sone Nybegynder
28. november 2000 - 08:24 #12
vagn16: Virker det ???
Avatar billede vagn16 Nybegynder
28. november 2000 - 12:45 #13
Hej sone og ubbe !

Det er måske ikke så nemt, hva\' ?

Jeg har som i kan se sat flere point af til jer...

Jeg prøver lige at forklare en gang til:

Jeg har en database hvori det indsættes artikler om forskellige emner (kategorier), så vil jeg gerne have en liste der viser de kategorier der er uden dubletter (tænder skal ikke vises flere gange, bare fordi der er flere artikler under denne kategori), og hvor mange artikler der er under hver kategori...

I databasen er fgl felter:

ID overskrift text kategori

vh

vagn / 16

Avatar billede sone Nybegynder
28. november 2000 - 12:51 #14
Hallo... hvad med at teste:

SELECT * FROM (SELECT kategori, Count(kategori) AS antal FROM table1 GROUP BY kategori) ORDER by antal DESC
Avatar billede vagn16 Nybegynder
28. november 2000 - 13:14 #15
Og ehhhhh.... så får jeg skrevet antal hvordan ???

Jeg starter med at skrive min kategori og derefter vil jeg så have antal:

<% response.write oRs2.Fields(\"kategori\").Value %> (antal)

vh

vagn/16
Avatar billede sone Nybegynder
28. november 2000 - 13:19 #16
oRs2(1) - oRs2(0) er kategorien.

De felter man vælger med SELECT kan til enhver til tilgåes relativt: plads 0, 1, 2, osv.
Avatar billede vagn16 Nybegynder
28. november 2000 - 13:32 #17
- legendarisk !

Tak for hjælpen... også til dig ubbe - selvom sone løb med hele æren !!!

Håber ikke at du er skuffet ?

Vh

vagn / 16
Avatar billede justdoit Nybegynder
28. august 2002 - 21:54 #18
Hej sone eller vagn16:

Hvordan laver jeg det samme her???


strSQL = "SELECT Catalogs.catalogName as UdskrivNavn, Products.ProductID, Products.ProductName, Products.CatalogID FROM Products, catalogs where Catalogs.catalogNameID = Products.CatalogID"
    strSQL = strSQL & " AND (products.productName LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (products.productDesc LIKE '%" & strKeyword & "%')"
    RS.open strSQL, con
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester