/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
COUNT() i Access
Fra : Morten Blinksbjerg N~


Dato : 10-09-01 09:04

Hej, det er mig igen :)

Jeg har to tabeller i en Access database. Den ene hedder Medlemmer, og
indeholder bla. felterne: id og type.

Den anden tabel hedder Medlemstyper, og indeholder felterne:
id og type.

Medlemmer.type indeholder en reference til Medlemstyper.id.

Jeg vil gerne have en oversigt over hvor mange medlemmer der
er, med de forskellige medlemstyper.

I MySQL ville jeg lave noget lignende:

SELECT Medlemstyper.type, COUNT(Medlemmer.id) AS antal
FROM Medlemmer, Medlemstyper
WHERE Medlemmer.type = Medlemstyper.id
GROUP BY Medlemstyper.type

Men det lader til, at ovenstående ikke lader sig gøre i Access.

Er der nogen herinde der kan oversætte mit sætning til Access-SQL?

--
Morten Blinksbjerg Nielsen
http://www.mbn.dk/


 
 
Nis Jorgensen (10-09-2001)
Kommentar
Fra : Nis Jorgensen


Dato : 10-09-01 09:40

On Mon, 10 Sep 2001 10:04:29 +0200, "Morten Blinksbjerg Nielsen"
<usenet@mbn.dk> wrote:

>
>I MySQL ville jeg lave noget lignende:
>
>SELECT Medlemstyper.type, COUNT(Medlemmer.id) AS antal
>FROM Medlemmer, Medlemstyper
>WHERE Medlemmer.type = Medlemstyper.id
>GROUP BY Medlemstyper.type
>
>Men det lader til, at ovenstående ikke lader sig gøre i Access.

Virker fint her. Hvilken fejlmeddelelse (eller forkert resultat) får
du?


--
Nis Jorgensen
Amsterdam

Please include only relevant quotes, and reply below the quoted text. Thanks

Morten Blinksbjerg N~ (10-09-2001)
Kommentar
Fra : Morten Blinksbjerg N~


Dato : 10-09-01 09:41

> Virker fint her. Hvilken fejlmeddelelse (eller forkert resultat) får
> du?

Gør det det? - hvilken version af access bruger du?

Jeg bruger 97, men jeg har den ikke her, så jeg kan ikke komme med
en præcis fejlbesked. Jeg kommer i nærheden af databasen i
eftermiddag, så skal jeg nok poste den præcise besked :)

Jeg kan huske at gerne ville have, at jeg skulle bruge TRANSFORM og
PIVOT...

--
Morten Blinksbjerg Nielsen
http://www.mbn.dk/


Nis Jorgensen (10-09-2001)
Kommentar
Fra : Nis Jorgensen


Dato : 10-09-01 11:46

On Mon, 10 Sep 2001 10:40:46 +0200, "Morten Blinksbjerg Nielsen"
<usenet@mbn.dk> wrote:

>> Virker fint her. Hvilken fejlmeddelelse (eller forkert resultat) får
>> du?
>
>Gør det det? - hvilken version af access bruger du?

Ja, 97. Jeg testede det lige fuldt ud (oprettede tabellerne osv). Jeg
kan sende dig en zipped mdb-fil (21 KB) hvis du lider det.



Morten Blinksbjerg N~ (10-09-2001)
Kommentar
Fra : Morten Blinksbjerg N~


Dato : 10-09-01 17:12

> Ja, 97. Jeg testede det lige fuldt ud (oprettede tabellerne osv). Jeg
> kan sende dig en zipped mdb-fil (21 KB) hvis du lider det.

Meget gerne :)

--
Morten Blinksbjerg Nielsen
http://www.mbn.dk/


Nis Jorgensen (11-09-2001)
Kommentar
Fra : Nis Jorgensen


Dato : 11-09-01 11:08

Jeg har modtaget nedenst[ende fra Morten, som jeg svarer på herÆ

On 10 Sep 2001, at 23:11, Morten Blinksbjerg Nielsen wrote:

> Jeg kan godt se at dit virker...
>
> Nu sidder jeg nu her i foreningen der bruger databasen, og når jeg
> tilpasser din SQL sætning får jeg fejlen:
>
> "Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne
> udtryk "Medlemstype" som en del af en aggregatfunktion.".
>
> Jeg tilpassede sætningen til at lyde:
>
> SELECT Medlemstyper.Medlemstype, Count(Medlemmer.Medlemsnr) AS Antal
> FROM Medlemmer, Medlemstyper
> WHERE ((([Medlemmer].[Medlemstype-ID])=([Medlemstyper].[Medlemstype-ID])))
> GROUP BY Medlemstyper.Medlemstype-ID;


> I tabellen Medlemmer har jeg felterne:
> Medlemsnr Tal
> Medlemstype-ID Tal
>
> I tabellen Medlemstyper har jeg:
> Medlemstype-ID Autonummerering
> Medlemstype Tekst
>
> Kan du se hvad der går galt?

Access fortæller det jo så fint: Du har ikke-aggregerede felter i
SELECT-delen, som ikke findes i GROUP BY - og det er ikke lovlig SQL.
Det omvendte er heller ikke tilladt i standarden, men tillades af de
fleste DB-systemer. Du kan for eksempel ændre til:

SELECT Medlemstyper.Medlemstype-ID, Medlemstype,
Count(Medlemmer.Medlemsnr) AS Antal
FROM Medlemmer, Medlemstyper
WHERE [Medlemmer].[Medlemstype-ID] = [Medlemstyper].[Medlemstype-ID]
GROUP BY Medlemstyper.Medlemstype-ID, Medlemstyper.Medlemstype;

eller

SELECT Medlemstyper.Medlemstype, Count(Medlemmer.Medlemsnr) AS Antal
FROM Medlemmer, Medlemstyper
WHERE [Medlemmer].[Medlemstype-ID] = [Medlemstyper].[Medlemstype-ID]
GROUP BY Medlemstyper.Medlemstype;

eller med en INNER JOIN (jeg synes det er "pænere"):

SELECT Medlemstyper.Medlemstype, Count(Medlemmer.Medlemsnr) AS Antal
FROM Medlemmer INNER JOIN Medlemstyper
ON [Medlemmer].[Medlemstype-ID] = [Medlemstyper].[Medlemstype-ID]
GROUP BY Medlemstyper.Medlemstype;

Håber det hjælper.

Nis

Morten Blinksbjerg N~ (11-09-2001)
Kommentar
Fra : Morten Blinksbjerg N~


Dato : 11-09-01 19:06

> eller med en INNER JOIN (jeg synes det er "pænere"):
>
> SELECT Medlemstyper.Medlemstype, Count(Medlemmer.Medlemsnr) AS Antal
> FROM Medlemmer INNER JOIN Medlemstyper
> ON [Medlemmer].[Medlemstype-ID] = [Medlemstyper].[Medlemstype-ID]
> GROUP BY Medlemstyper.Medlemstype;
>
> Håber det hjælper.

Jo, mange tak :))

--
Morten Blinksbjerg Nielsen
http://www.mbn.dk/


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste