Avatar billede mn Nybegynder
04. september 2002 - 14:57 Der er 34 kommentarer og
4 løsninger

SELECT Count(Distinct ClientID) FROM tblOrders i access ?

Hejsa

Hvordan laver jeg sådan en fætter :

SELECT Count(Distinct ClientID) FROM tblOrders

Det skal køres i et hug... altså ikke en subquery...


Morten
Avatar billede a1a1 Novice
04. september 2002 - 14:58 #1
select distinct count(clientID) from tblOrders

??

;)
Avatar billede mn Nybegynder
04. september 2002 - 15:03 #2
nej... det er ikke sådan. Så giver den antallet af poster netop een gang... Det er ikke det jeg skal bruge.
Jeg vil se antallet af hvor mange kunder der har lagt ordrer
Avatar billede proaccess Nybegynder
04. september 2002 - 15:04 #3
Den kan Access ikke ;-(
Du er nødt til at bruge sub-qyery (evt. indlejret)

SELECT Count(fx.*) AS Antal FROM (SELECT DISTINCT ClientID FROM tblOrders) AS fx;
Avatar billede terry Ekspert
04. september 2002 - 15:04 #4
select count(*)
Avatar billede mn Nybegynder
04. september 2002 - 15:08 #5
skrammel-skrammel-skrammel... det er det jeg ikke vil...

Det bliver noget ineffektivt snask...

Jeg har så grupperet mine kunder i en række kategorier og skal så have et udtræk der ser cirka sådan her ud :

brand,beløb,antal kunder
tøj,213.239,324
sko,424.234,392

Hvordan vil den se ud med subquery... ?

Hvis der er andre der kender til en anden funktion end count i access der gør tricket, er der point !!! Ellers bliver jeg nødt til at leve med subqry... det er bare lidt noget skrammel
Avatar billede a1a1 Novice
04. september 2002 - 15:12 #6
SELECT fk_grouptextID, COUNT(fk_grouptextID) FROM tbx_usergrouptext GROUP BY fk_grouptextID

dur på min tabel (ms sql)
Avatar billede a1a1 Novice
04. september 2002 - 15:13 #7
din må være noget ala

SELECT ClientID, COUNT(ClientID) FROM tblOrders GROUP BY ClientID
Avatar billede a1a1 Novice
04. september 2002 - 15:23 #8
eller hvis det er tøj osv, har jeg denne der virker
SELECT iSaletype, COUNT(iSaletype), SUM(iPrice) FROM tbl_usersale GROUP BY iSaletype

din noget ala:
SELECT Brand, sum(Price), COUNT(Brand) FROM tblOrders
Avatar billede mn Nybegynder
04. september 2002 - 15:25 #9
Hey... clients skal stadig køres op mod brands... så den er ikke home free endnu...
Avatar billede mn Nybegynder
04. september 2002 - 15:28 #10
hmm...
Prøver lige at samle op.

Jeg har en tabel med tre kollonner. fx følgende
brand, price, clientID
værdier kunne være følgende
tøj,123,1
tøj,321,1
sko,543,1
sko,53,2

Resultatet skal så være :
tøj, 444, 1
sko, 596, 2
Avatar billede mugs Novice
04. september 2002 - 15:39 #11
SELECT Tabel1.brand, Sum(Tabel1.price) AS SumOfprice, Tabel1.client
FROM Tabel1
GROUP BY Tabel1.brand, Tabel1.client;
Avatar billede a1a1 Novice
04. september 2002 - 15:43 #12
SELECT Brand, SUM(Price), COUNT(ClientID) FROM tblOrders ???
Avatar billede a1a1 Novice
04. september 2002 - 15:43 #13
GROUP BY Brand
Avatar billede mn Nybegynder
04. september 2002 - 15:49 #14
den sidste giver følgende resultat :
brand, price, clientid
sko, 543, 1
sko, 53, 2
tøj, 444, 1

fordi der grupperes på begge niveauer
Avatar billede mn Nybegynder
04. september 2002 - 15:51 #15
der var så sneget sig en ind i mellemtiden. Det resultat jeg skrev ovenfor var mugs

a1,
dit resultat bliver

brand, price, clientid
tøj, 444, 2
sko, 596, 2

Hvor der reelt kun er en kunde på tøj...
Avatar billede mugs Novice
04. september 2002 - 15:52 #16
Hvad bestemmer, at der ud for sko skal stå 2 og ikke 1?
Avatar billede mn Nybegynder
04. september 2002 - 15:54 #17
jf mit indlæg 04/09-2002 15:28:39

At der er to forskellige kunder der har handlet sko, mens det kun er een kunde der har handlet tøj. Dog har denne ene kunde gjort to indkøb
Avatar billede a1a1 Novice
04. september 2002 - 16:01 #18
prøv med

SELECT Brand, SUM(Price), COUNT(DISTINCT ClientID) FROM tblOrders GROUP BY Brand

;)
Avatar billede a1a1 Novice
04. september 2002 - 16:02 #19
Det dur på min....:)
Avatar billede mn Nybegynder
04. september 2002 - 16:13 #20
a1, det er da vist ikke i access... Der kan man vist ikke lave en count(distinct...)
Avatar billede a1a1 Novice
04. september 2002 - 16:28 #21
har du prøvet??? :o)

jeg har kun afprøvet på en SQL Server

men hvis det ikke dur KAN det være fordi du har en gammel MDAC driver
http://microsoft.com/data/download_270RTM.htm
Avatar billede mugs Novice
04. september 2002 - 16:30 #22
SELECT Tabel1.brand, Sum(Tabel1.price) AS SumOfprice, Max(Tabel1.client) AS MaksOfclient
FROM Tabel1
GROUP BY Tabel1.brand;
Avatar billede mugs Novice
04. september 2002 - 16:31 #23
duer ikke mn
Avatar billede mn Nybegynder
04. september 2002 - 16:59 #24
Hej a1

mdac er vist ikke nok. Har også læst andetsteds at access ikke kan lave en count(distinct clientid)

Det jeg håbede på var at der var en alternativ funktion til Count. Fx. en der hedder CountDistinct() eller lignende...

Alternativ igen, er der points til den der syr en query med subquery sammen, der virker efter hensigten...
Avatar billede a1a1 Novice
04. september 2002 - 17:06 #25
tja gamle drivere understøtter ikke @@IDENTITY men det gør de nye, så jeg ville prøve at downloade og prøve (@@IDENTITY er en funktion til at få sidste ID)
Avatar billede mn Nybegynder
04. september 2002 - 17:07 #26
Det er noget i stil med følgende vi ender ud i

SELECT ot.brand, Sum(ot.price) AS SumPrice, Count(sqry.ClientID) AS ClientCount
FROM tblOrder as ot, [SELECT DISTINCT ClientID FROM tblOrder as it WHERE ot.brand=it.brand]. AS sqry
GROUP BY ot.brand;

Mit bud virker dog ikke endnu...
Avatar billede a1a1 Novice
04. september 2002 - 17:09 #27
SELECT o.Brand, SUM(o.Price), (SELECT DISTINCT COUNT(o2.ClientID) FROM tblOrders o2 WHERE o2.Brand=o.Brand) FROM tblOrders o GROUP BY Brand

:) ????
Avatar billede a1a1 Novice
04. september 2002 - 17:10 #28
SELECT o.Brand, SUM(o.Price), (SELECT DISTINCT COUNT(o2.ClientID) FROM tblOrders o2 WHERE o2.Brand=o.Brand) FROM tblOrders o GROUP BY o.Brand
Avatar billede mn Nybegynder
04. september 2002 - 17:29 #29
Den regner rigtigt nok på beløbet, men resultatet bliver følgende

brand, price, clientid
tøj, 444, 2
sko, 596, 2

Hvor den kun skulle have givet en kunde på tøj-segmentet.
Avatar billede a1a1 Novice
04. september 2002 - 17:53 #30
har du prøvet
SELECT Brand, SUM(Price), COUNT(DISTINCT ClientID) FROM tblOrders GROUP BY Brand

????

har du opdateret din driver (det kan ikke skade, du kan kun risikere at du får bedre performance)
Avatar billede mugs Novice
04. september 2002 - 17:58 #31
SELECT Tabel1.brand, Sum(Tabel1.price) AS SumOfprice, Count(Tabel1.client) AS AntalOfclient
FROM Tabel1
GROUP BY Tabel1.brand;

Så vidt jeg kan se fungerer den her.
Avatar billede mn Nybegynder
04. september 2002 - 18:06 #32
mugs. Der sker det samme her... Bemærk at det er antallet af kunder jeg ønsker ud i tredje kollonne - ikke antallet af kundeindkøb...

jf mit indlæg : 04/09-2002 15:54:31
Avatar billede mugs Novice
04. september 2002 - 18:11 #33
Du kan ikke have en kunde uden et indkøb. Se proaccess svar.
Det var måske på tide vi begynder at lytte til, hvad eksperterne siger!
Avatar billede mn Nybegynder
04. september 2002 - 18:36 #34
ved det godt... men... jeg kan godt have flere salg på samme kunde.

hvis jeg vil kigge i en stor indkøbstabel og se hvormange kunder jeg reelt har i de forskellige grupper, er det den problemstiling jeg forespørger på...

proaccess var inde på noget af det rigtige... subquery-like...
Avatar billede mugs Novice
04. september 2002 - 18:47 #35
Du kan gøre det i en rapport ved at lade rapporten opsummere på varegrupper. Det er nemt at lave, hvis du benytter Guidenrapport. Så kan du i tilgift også få %-del af antal kunder, der er i hver varegruppe holdt op mod det samlede antal kunder. Ligeledes omsætning i hver varegruppe.

Du kan også lave det i en VBA-procedüre i en formular. Du laver en DCount funktion, der tæller på en enkelæt varegruppe, oh giver dig antal kunder.
Avatar billede mn Nybegynder
05. september 2002 - 10:13 #36
Joo.. man kunne nok komme omkring det på den måde, men... jeg har bruge for en ren sql-løsning...
det skal mappes ind i et større generisk udtræk..

prøvede med mdac,- det gav ikke nogen effekt. Desværre...
Avatar billede terry Ekspert
17. oktober 2002 - 20:00 #37
mn>how about closing!
Avatar billede mn Nybegynder
06. februar 2003 - 12:16 #38
hey.
Access er sgu noget møj engang i mellem. Løsningen blev at skrive en midlertidig tabel. Access kan simpelthen ikke løse den i hukommelsen. Der skal noget sql-server til.

piv og suk.

i får points i split.

tak for hjælpen
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