/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
select count(*) fra flere tabeller...
Fra : Ukendt


Dato : 02-12-02 23:39

Jeg har flere forskellige tabeller, der alle indeholder det samme felt
- lad os kalde det FELT1. Dette felt kan f.eks. have værdien 0 eller
1. Jeg vil så tælle hvor mange records, fra alle mine tabeller, der
har værdien 1 i FELT1.

Lad os for nemheds skyld sige, at jeg kun har 2 tabeller - TABEL1 og
TABEL2. I TABEL1 er der f.eks. 3 records, der opfylder kriteriet, og i
TABEL2 er der 2 records.

Det jeg er på jagt efter, er et resultat med én record, hvor værdien
er 5 (altså 3 + 2).

Mit første forsøg:

select count(*)
from table1, table2
where field1 = 1

Det giver (naturligvis) én record, men med en forkert værdi - (og alt
afhængig af, hvilken rækkefølge man selecter fra tabellerne).

Mit næste forsøg:

select count(*)
from table1, table2
where table1.field1 = 1
and table2.field1 = 1

Det giver mig én record - men også med en forkert værdi. (De to
count's bliver her ganget sammen).

Jeg forsøger så med union:

select count(*)
from table1
where status = 1

union

select count(*)
from table2
where status = 1

Og det giver mig så to records med værdierne 3 og 2. Tæt på, men ikke
tæt nok.

Hvad er den helt åbenlyse løsning, jeg ikke kan se? På forhånd tak.

Mvh, Claus
--
I never apologize! I'm sorry, but that's the way I am.
- Homer Simpson

 
 
Jens Gyldenkærne Cla~ (02-12-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-12-02 23:55

Claus Nielsen skrev:

> Hvad er den helt åbenlyse løsning, jeg ikke kan se? På forhånd
> tak.

Put count udenfor union-forespørgslen:

SELECT COUNT(*) As Antal
FROM (
   SELECT 1
   FROM tabel1
   WHERE status = 1

   UNION ALL
   
   SELECT 1
   FROM tabel2
   WHERE status = 1
   )

Union all, fordi dubletter ellers sorteres væk.
Ovenstående er ikke afprøvet.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Ukendt (09-12-2002)
Kommentar
Fra : Ukendt


Dato : 09-12-02 19:07

>Put count udenfor union-forespørgslen:
>[snip SQL-kode]
>Ovenstående er ikke afprøvet.

Nope. Det virker desværre ikke. Eller det vil sige; jeg kan i hvert
fald ikke få det til at virke. Jeg har godt nok kun afprøvet det med
Interbase og Paradox, men ingen af disse kan desværre æde det
SQL-statement.

Men ellers tak for hjælpen.

Mvh, Claus
--
I never apologize! I'm sorry, but that's the way I am.
- Homer Simpson

Jens Gyldenkærne Cla~ (09-12-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-12-02 21:34

Claus Nielsen skrev:

> Nope. Det virker desværre ikke. Eller det vil sige; jeg kan i
> hvert fald ikke få det til at virke.

Hm - ved afprøvning virker det heller ikke her (MSSQL). Men denne
her gør:

select (select count(*)   from aftalestatus)
+ (select count(*) from arrtyper) as antal
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste