Avatar billede chiefpontiac Nybegynder
15. maj 2005 - 21:41 Der er 4 kommentarer og
1 løsning

spørring som teller antall av hver vare i en tabell

Har en tabell som heter arkitektinfo. Den inneholder info om prosjektnavn, oppdragsgiver, kontaktperson etc pluss låser, beslag, sylindre (hentet fra et vareregister) . Den er bygd opp slik at noe blir importert fra ei excel-fil(oppdragsgiver, kontaktperson, prosjektnavn etc), resten(fra vareregisteret) blir lagt inn manuelt for hver dør:
prosjektnavn|kunde|dørnr|lås|beslag|sylinder(tils ca 40 kolonner)
Det kan forekomme opptil 100 dører i hvert prosjekt.
Samme lås, sylinder, beslag brukes til flere dører. Ønsker ei spørring som teller og viser antall lås, sylindre,beslag av type "a", "b" etc som er lagt inn.
For bare lås, eller bare sylinder, ikkeno problem, men alle samtidig?
SELECT Skilt, Count('Skilt') AS Antall
FROM Arkitektinfo
GROUP BY Skilt
HAVING (((Count('Skilt',))>=1));
Er nybegynner på dette, men er takknemlig for hjelp
Avatar billede kjulius Novice
16. maj 2005 - 00:14 #1
Det du ønsker er en COUNT(DISTINCT felt) funktion. Access har bare ikke sådan en funktion, desværre.

Du kan evt. emulere sådan en funktion ved at kombinere flere SQL forespørgsler. Sådan circa sådan her:

SELECT Skilt, COUNT(*) AS Skilte, (SELECT Lås, COUNT(*) AS Låse FROM Arkiteksinfo WHERE projektnavn='Thunderstorm' GROUP BY Lås), (SELECT Sylinder, COUNT(*) AS Sylindre FROM Arkitektinfo WHERE projektnavn='Thunderstorm' GROUP BY Sylinder), (SELECT Beslag, COUNT(*) AS AntalBeslag From Arkitektinfo WHERE projektnavn='Thunderstorm' GROUP BY Beslag)
FROM Arkitektinfo
WHERE projektnavn = 'Thunderstorm'
GROUP BY Skilt

Jeg kan selvfølgelig ikke sige om ovenstående helt svarer til din situation, så det skal selvfølgelig rettes til, men basalt set burde det virke.

Som du kan se, så er der tale om selvstændige forespørgsler (spørringer) i paranteserne. Du er derfor nødt til at gentage mange informationer, som ikke havde været nødvendigt, hvis Access havde haft en COUNT(DISTINCT feltnavn) funktion.
Men der er jo en grund til, at Microsoft kan sælge en MS SQL server løsning. :-)
Avatar billede chiefpontiac Nybegynder
16. maj 2005 - 22:09 #2
Takk for svaret, Får feilmelding: "You have written a subquery that can return more than one field without using the reserved clause EXISTS in the main query's FROM clause.Revise the SELECT statement in the subquery to request only one field".
Har forresten funnet at jeg bør bruke ei spørring hvor prosjektnavnet allerede er besvart.
Avatar billede kjulius Novice
17. maj 2005 - 23:19 #3
Du har helt ret. Det virker ikke på den måde, og jeg skulle have prøvet det af, inden jeg gjorde mig klog på det :-(

Kan du i stedet bruge en løsning med union?

SELECT 'Skilt' AS Gruppe, Skilt AS Type, Count(*) AS Antall
FROM Arkitektinfo
GROUP BY 'Skilt', Skilt
UNION
SELECT 'Lås', Lås, Count(*) AS Antall
FROM Arkitektinfo
GROUP BY 'Lås', Lås
UNION
SELECT 'Sylinder', Sylinder, Count(*) AS Antall
FROM Arkitektinfo
GROUP BY 'Sylinder', Sylinder
UNION
SELECT 'Beslag', Beslag, Count(*) AS Antall
FROM Arkitektinfo
GROUP BY 'Beslag', Beslag
Avatar billede chiefpontiac Nybegynder
18. maj 2005 - 16:46 #4
Det fungerte glimrende. Takker og bukker og kysser jorden ved dine føtter etc.
Avatar billede kjulius Novice
20. maj 2005 - 01:00 #5
Tak, tak, men mindre kan nu gøre det! LOL
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