15. maj 2005 - 21:41Der 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
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. :-)
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.
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
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.