Avatar billede it-dyret Nybegynder
09. august 2005 - 20:19 Der er 4 kommentarer og
1 løsning

Union af 3 forespørgsler indeholdende count

Jeg har en tabel (Properties), som bl.a. har tre attributter, som alle holder et bynavn. Attributterne hedder Town, Town1 og Town2, hvor town er den by, hvor boligen ligger, og de to andre er de nærmeste større byer. Jeg vil gerne have en liste over de byer, som optræder flest gange i tabellen - og til det formål har jeg lavet følgende forespørgsel:

SELECT TOP 5 Properties.Town
FROM Properties
WHERE Properties.Inactive Is Not Null
GROUP BY Properties.Town
ORDER BY COUNT(Properties.Town) DESC;

Inactive er en attribut, som holder en dato, hvis boligen er inaktiv - og inaktive boliger vil jeg udelukke fra forespørgslen... Forespørgslen fungerer efter hensigten, men genererer (naturligvis) kun en liste over de 5 mest populære byer målt på den eksakte beliggenhed (altså Town).

Jeg vil gerne have en forespørgsel, som er i stand til at levere de mest populære byer PÅ TVÆRS af de tre Town-attributter. Kan det lade sig gøre??

Jeg forestiller mig noget med at union tre lignende forespørgsler, men kan ikke få det til at virke...
Avatar billede kjulius Novice
09. august 2005 - 20:57 #1
Da du bruger Access burde du kunne bruge noget lignende dette her:

SELECT TOP 5 TOWN, SUM(ANTAL) AS ANTALGANGE
FROM [SELECT TOWN, COUNT(*) AS ANTAL FROM PROPERTIES GROUP BY TOWN UNION ALL SELECT TOWN1 AS TOWN, COUNT(*) AS ANTAL FROM PROPERTIES GROUP BY TOWN1 UNION ALL SELECT TOWN2 AS TOWN, COUNT(*) AS ANTAL FROM PROPERTIES GROUP BY TOWN2]. AS TMP
GROUP BY TOWN
ORDER BY SUM(ANTAL) DESC
Avatar billede kjulius Novice
09. august 2005 - 21:10 #2
Alternativt kan du oprette en Forespørgsel med unionen:

SELECT TOWN, COUNT(*) AS ANTAL FROM PROPERTIES GROUP BY TOWN
UNION ALL
SELECT TOWN1 AS TOWN, COUNT(*) AS ANTAL FROM PROPERTIES GROUP BY TOWN1
UNION ALL
SELECT TOWN2 AS TOWN, COUNT(*) AS ANTAL FROM PROPERTIES GROUP BY TOWN2

og senere oprettte endnu en forespørgsel:

SELECT TOP 5 TOWN, SUM(ANTAL) AS ANTALGANGE
FROM Forespørgsel1
GROUP BY TOWN
ORDER BY SUM(ANTAL) DESC

Jeg er ikke klar over, om den første metode (med det hele i én forespørgsel) virker i versioner før Access 2003 SP1, som er den version jeg har afprøvet det i.
Avatar billede it-dyret Nybegynder
09. august 2005 - 22:08 #3
Glimrende! Jeg har brugt den første version...

Det var næsten det, som jeg ledte efter. Jeg har selv tilføjet detaljen med Inactive ved at sætte en simpel WHERE-betingelse på de tre "embeddede" statements. Og jeg har udelukkende blanke resultater på bynavnet ved at sætte en WHERE-betingelse på den "ydre" statement.

Hvis du poster et svar kjulius, så kaster jeg nogle point efter dig
Avatar billede it-dyret Nybegynder
09. august 2005 - 22:09 #4
I ovenstående skulle der stå "udelukket" og ikke "udelukkende"
Avatar billede kjulius Novice
09. august 2005 - 22:25 #5
Altid glad for at kunne hjælpe... :-)
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