09. august 2005 - 20:19Der 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...
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
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
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.
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
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.