Avatar billede tobbi Nybegynder
20. september 2001 - 22:49 Der er 14 kommentarer og
3 løsninger

select count(*) .....

Ved ikke om det er den rigtige kategori....

jeg vil lave en alm. select hvor jeg samtidig tæller antallet af fundne rækker op.
Jeg bruger jscript.

normalt vil en count se sådan ud :
Select count(*) as antal from tabel where .......

hvad nu hvis jeg samtidig vil hente rækkerne op ??

Nogen ideer ?
Avatar billede tmceu Praktikant
20. september 2001 - 23:44 #1
Dette er lidt af et problem, for hvis du inkluderer en count i dit SQL statement, er du nødt til også at inkludere en group by, og så får du et lidt uventet resultat. Jeg vil foreslå følgende:

1. Du deler dit SQL op i 2 statements, som du kører i samme execute

strSQL = \"SELECT * FROM Tabel;\"
strSQL = strSQL & \"SELECT COUNT(*) AS Antal;\"

set objRS = Conn.Execute strSQL

2. derefter inkluderer du flg. kode for at behandle dine nu 2 recordsets:

if not objRS.EOF then
- kode til behandling af 1. recordset
end if

set objRS = objRS.NextRecordSet

if not objRS.EOF then
- kode til behandling af 2. recordset
end if

Jeg forudsætter at du har erklæret objRS og Conn som hhv. recordset og connection

P.S. Denne kode virker ikke på Access, da den ikke kan returnere flere recordsets i samme statement.

Hvis du bruger Access, må du eksekvere koden af 2 gange :-(
Avatar billede tmceu Praktikant
20. september 2001 - 23:46 #2
Forresten var dette egentlig bare et SQL spørgsmål, men da du oprettede det i ASP kategorien, gik jeg ud fra at du skulle bruge det der ?
Avatar billede webbe Nybegynder
21. september 2001 - 08:05 #3
Har aldrig haft brug for en \"GROUP BY\" når jeg laver en SELECT COUNT(*)!!!!

Det der sker er at du vælger alt (*) fra tabellen mens du laver et count på antal rækker i din tabel - ikke et enkelt felt!

Skulle det have været et felt (fx. id) skulle det være SELECT COUNT(id) AS Antal.

Det virker på både Access og Oracle tabeller! ;0)
Avatar billede tobbi Nybegynder
21. september 2001 - 08:23 #4
da jeg er ved at lave noget test, er det Acces jeg arbejder med, indtil det skal lægges over på den rigtige server......

mn jeg tror ikke lige jeg forstod det sidste indlæg.... kan du give et eks.
Avatar billede webbe Nybegynder
21. september 2001 - 08:28 #5
sql = \"SELECT COUNT(*) AS antal FROM table_name\"
Connect.Execute(sql)

response.write(\"Der er \"&rs(\"Antal\")&\" poster i tabellen\")
Avatar billede tobbi Nybegynder
21. september 2001 - 08:36 #6
ok, det var jeg godt klar over....
men jeg var ude efter en løsning, så man både kunne lave :

select * from table_name
+
select count(*) from table_name

samtidig.
Avatar billede webbe Nybegynder
21. september 2001 - 08:41 #7
Hvorfor det????

Med min sætning kan du trække alle oplysninger + et antal ud af din tabel!

Prøv følgende:

sql = \"SELECT COUNT(*) AS antal FROM table_name\"
Connect.Execute(sql)

response.write(\"Der er \"&rs(\"Antal\")&\" poster i tabellen - du kan se dem nedenunder:\")

do until sql.eof
  response.write rs(\"Navn\")
  response.write rs(\"Adr\")
sql.movenext
loop

På den måde kan du se at du kan begge dele med den ene sql-sætning!
Avatar billede eagleeye Praktikant
21. september 2001 - 08:47 #8
Det er ikke muligt at lave det i en SQL sætning. tmceu er den der kommer tætest på ved at lave to SQL-sætninger i samme linie, men som tmceu også siger det kan Access ikke. Den kommer med en fejl, noget med ....found after end statement, som jeg husker det.
Avatar billede webbe Nybegynder
21. september 2001 - 08:50 #9
Det var da lige godt satans!!!!!!!!

Hvordan kan det så være jeg kan gøre det på en Access???? ;0)
Avatar billede tobbi Nybegynder
21. september 2001 - 08:56 #10
Når jeg prøver at lave en Count, har jeg ikke adgang til alle kolonner, kun min \'antal\'....

Avatar billede eagleeye Praktikant
21. september 2001 - 09:19 #11
webbe>>
ok jeg vil teste når jeg kommer hjem. For jeg har aldrig fået det til at virke kun med en SQL-sætning. Og da slet ikke med den SQL som du viserumiddelbart vil den returnere \"antal\":
sql = \"SELECT COUNT(*) AS antal FROM table_name\"

Den giver et felt nemlig \"antal\"

Vil du ikke lige forklare din kode så jeg er med. Du bruger rs som ikke bliver sat til noget?
Du bruger også sql som recordset, som lige er brugt til en streng?

Hvis det skal lykkes skal du lave en SQL så du får en \"antal\" kolonne og den skal for hver record så indeholde Count(*), men det er vist ikke sådan lige til.
Avatar billede webbe Nybegynder
21. september 2001 - 09:23 #12
Nå ja - skulle selvfølgelig have været fx. sql(\"Navn\")!!!! ;0)

Bruger bare den kode jeg har vist - og det virker fint her!
Avatar billede tmceu Praktikant
21. september 2001 - 09:40 #13
webbe >> kig lige efter om du ikke bruger 2 recordsets i din kode; rs og sql, for dit eksempel holder ikke.

sql = \"SELECT COUNT(*) AS antal FROM table_name\" returnerer et recordset med KUN ét felt \"Antal\" og du kan derfor ikke referere til navn og adresse i recordsettet.
Avatar billede webbe Nybegynder
21. september 2001 - 09:43 #14
Har tjekket - og må sige jeg vist trænger til weekend!!! *G*

Det er sq en Oracle-DB jeg kører det op imod....sorry!!!
Holder mig vist bare laaaaaaaangt fra at deltage i nogen debatter resten af dagen! *LOL*

Håber I kan tilgive mig! ;0)
Avatar billede eagleeye Praktikant
21. september 2001 - 09:48 #15
webbe>>
Hvordan kan det så være jeg kan gøre det på en Access????
hahaha  :)
Avatar billede tmceu Praktikant
21. september 2001 - 10:07 #16
tobbi >> har du fået svar på dit spørgsmål, eller skal du have yderligere forklaring ?
Avatar billede tobbi Nybegynder
21. september 2001 - 11:31 #17
Hej alle

tak for hjælpen.....

jeg tror jeg har fået det ud af det, at det ikke umiddelbart kan lade sig gøre som jeg vil ha\' det....
så jeg må finde på noget andet.
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