Avatar billede koppelgaard Praktikant
11. juni 2007 - 06:58 Der er 11 kommentarer og
1 løsning

count-function Access

jeg har en tabel med
4 felter

RunNbr
A
B
C

Vil gerne tælle antallet af forskellige RunNbr

Jeg har forsøgt med

select count(distinct RunNbr)
from tabelNavn

Men jeg får syntaktsfejl

Er der en der kan hjælpe?
Avatar billede kabbak Professor
11. juni 2007 - 08:01 #1
SELECT RunNbr, Count(RunNbr) AS AntalOfRunNbr
FROM Tabel1
GROUP BY RunNbr;
Avatar billede koppelgaard Praktikant
11. juni 2007 - 10:08 #2
Forespørgslen giver ikke helt hvad jeg ønsker
i tabel står
I dette tilfælde vil jeg have tallet 3 ud.
Hvordan får jeg det

RunNbr    MyTime    hTop    RunOff
2432    3260    -46.225    0
2432    3261    -50.031    0
2432    3262    -24.307    0
1133    3263    -42.879    0
1133    3264    -42.879    0
1133    3265    -44.599    0
1113    3266    -50.215    0
1113    3267    -44.065    0
1113    3268    -51.998    0
Avatar billede jensen363 Forsker
11. juni 2007 - 10:15 #3
Hej Michael

Så længe du hiver de andre værdier med over i din forespørgsel, eksempelvis MyTime som indeholder unikke værdier, vil du får dem vist som du gør
Avatar billede koppelgaard Praktikant
11. juni 2007 - 10:25 #4
Jeg er ikke helt med. Jeg har tabelværdier som ovenfor vist og vil gerne have talt antallet af forskellig værdier af runNbr.
Er der ikke en forespørgsel, der kan gøre det?

Michael
Avatar billede jensen363 Forsker
11. juni 2007 - 10:31 #5
Jo ... det er også det sim kabbak´s løsning gør ...

Du benytter udelukkende tabelkolonnen RunNbr i din SQLforespørgsel
Avatar billede kabbak Professor
11. juni 2007 - 12:38 #6
SELECT Tabel1.RunNbr, Tabel1.MyTime, Tabel1.hTop, Tabel1.RunOff, Count(Tabel1_1.RunNbr) AS AntalOfRunNbr
FROM Tabel1 AS Tabel1_1 INNER JOIN Tabel1 ON Tabel1_1.RunNbr = Tabel1.RunNbr
GROUP BY Tabel1.RunNbr, Tabel1.MyTime, Tabel1.hTop, Tabel1.RunOff;
Avatar billede kabbak Professor
11. juni 2007 - 14:53 #7
glem den sidste, det virke ikke.
Avatar billede kjulius Novice
11. juni 2007 - 18:28 #8
Da Access ikke understøtter COUNT DISTINCT, ville jeg forsøge med:

SELECT t.RunNbr, t.MyTime, t.hTop, tc.RunOff
FROM Tabel1 t
INNER JOIN (
  SELECT RunNbr, COUNT(*) AS RunOff
  FROM Tabel1
  GROUP BY RunNbr
) AS tc ON t.RunNbr = tc.RunNbr

(Access understøtter nested queries i indtil 1 niveau)

Alternativt kan du oprette to forespørgsler:

Forespørgsel1:

SELECT RunNbr, COUNT(*) AS RunOff
FROM Tabel1
GROUP BY RunNbr

(Hvilket er den samme som den "inderste" forespørgsel i ovenstående sammensatte forespørgsel).

Forespørgsel2:

SELECT t.RunNbr, t.MyTime, t.hTop, f1.RunOff
FROM Tabel1 t
INNER JOIN Forespørgsel1 f1 ON t.RunNbr = f1.RunNbr

(du kan sikkert genkende den "yderste" del af den sammensatte forespørgsel).
Avatar billede kjulius Novice
11. juni 2007 - 18:41 #9
Og straks jeg har sendt min kommentar, opdager jeg naturligvis fejl, grr...

Fejlen var/er, at det var det forkerte der blev talt. Prøv i stedet med:

Forespørgsel1:

SELECT COUNT(*) AS Antal
FROM (
  SELECT DISTINCT RunNbr
  FROM Tabel1
) AS t

Forespørgsel2:

SELECT RunNbr, MyTime, hTop, (SELECT Antal FROM Forespørgsel1) AS RunOff
FROM Tabel1

(Som i ovenstående kan den kombinerede forespørgsel (Forespørgsel1) deles i to).
Avatar billede koppelgaard Praktikant
12. juni 2007 - 12:28 #10
Jeg prøver
Avatar billede koppelgaard Praktikant
12. juni 2007 - 12:39 #11
YES, der var den !
Stærkt !

forespørgsel1 gav lige, det jeg gerne ville have

SELECT COUNT(*) AS Antal
FROM (
  SELECT DISTINCT RunNbr
  FROM Tabel1
) AS t


Sender du et svar kjulius ?
Avatar billede kjulius Novice
12. juni 2007 - 19:14 #12
Jeps, kommer her...
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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