Avatar billede harlequin Nybegynder
10. oktober 2001 - 13:57 Der er 10 kommentarer og
1 løsning

count i en union forespørgelse

jeg har 3 tabeller i en UNION forspørgelse som jeg gerne vil have summen af posterne i, kan man løse det i en SQL streng ? har løst det af to omgange på følgende måde:

Forespørgsel1:
SELECT COUNT (*) AS antal FROM tblCategory0
UNION SELECT COUNT(*) AS antal FROM tblCategory01
UNION SELECT COUNT(*) AS antal FROM tblCategory02

Forespørgsel2
SELECT Sum(antal) AS Total FROM Forespørgsel1;

Avatar billede bennytordrup Nybegynder
10. oktober 2001 - 14:00 #1
SELECT Sum(antal) AS Total
FROM (SELECT Count(*) AS Antal ...
      UNION SELECT Count(*) AS Antal ...
      UNION SELECT Count(*) AS Antal
      )
Avatar billede proaccess Nybegynder
10. oktober 2001 - 14:04 #2
Denne burde kunne gøre det... (er IKKE afprøvet)

SELECT (SELECT COUNT(*) FROM tblCategory0) + (SELECT Count(*) FROM tblCategory01) + (SELECT COUNT(*) FROM tblCategory02)
Avatar billede harlequin Nybegynder
10. oktober 2001 - 14:08 #3
benny.tordrup> kan hvor skal jeg sætte tabelnavnet ind ?

proaccess> virker ikke reserveret fejl!
10. oktober 2001 - 14:09 #4
Hmm Access tilader ikke brug af subqueries på nogle af de 2 ovennævnte måder. SQL server gør, men ikke Access!

Du kan altid strikke en forespørgsel sammen, som tæller sammen hva DSum! Men det er meget beskidt programmering og det vil være meget langsomt. Så vil jeg hellere anbefale dig at beholde de 2 forespørgsler. Hvad betyder 1 forespørgsel også fra eller til?

/Thomas
Avatar billede bennytordrup Nybegynder
10. oktober 2001 - 14:10 #5
De tre punktummer skal erstattes af FROM + tabelnavn

SELECT Sum(antal) AS Total
FROM (SELECT Count(*) AS Antal FROM tblCategory0
      UNION SELECT Count(*) AS Antal FROM tblCategory01
      UNION SELECT Count(*) AS Antal FROM tblCategory02
      )
Avatar billede bennytordrup Nybegynder
10. oktober 2001 - 14:11 #6
thomasjepsen> Access 2000 gør på min facon... Er testet - oven i købet på to tabeller, som ikke har ens struktur
Avatar billede proaccess Nybegynder
10. oktober 2001 - 14:14 #7
Never say never again...

SELECT Count(*) + (SELECT Count(*) FROM tblCategory01) + (SELECT Count(*) FROM tblCategory02) FROM tblCategory0;

Avatar billede harlequin Nybegynder
10. oktober 2001 - 14:16 #8
takker det virker
/harlequin
10. oktober 2001 - 14:22 #9
Hmm, jeg må lære at holde min mund ... har ikke kunnet få det til at virke i Access 97 :o(

Dit sidste forslag ProAccess, svarer jo i høj grad til det jeg foreslog med DCount/DSum - dog nok en anelse hurtigere...

Erfaringen har vist mig, at man ikke skal tilstræbe at få komprimeret det hele ned til én forespørgsel. Hellere have flere simple forespøgsler som trækker på hinanden. Jet er ikke optimeret til at klare rigtig komplekse forespørgsler.
Avatar billede proaccess Nybegynder
10. oktober 2001 - 14:31 #10
>Benny: Hvorfor virker det IKKE når det er den samme tabel, som står flere steder i UNION\'en...

SELECT Sum(antal) AS Total
FROM [SELECT Count(*) AS Antal FROM Brancher
      UNION SELECT Count(*) AS Antal FROM Brancher
      UNION SELECT Count(*) AS Antal FROM Brancher
      ]. AS [%$##@_Alias];

Den tæller så kun brancherne een gang...
Avatar billede bennytordrup Nybegynder
10. oktober 2001 - 14:37 #11
Formodentlig fordi Access selv evaluerer den dobbelt forespørgsel som overflødig
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