|
| 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/
| |
|
|