|
| Simpelt SQL Fra : Thomas Voller |
Dato : 27-04-03 11:53 |
|
Hej NG.
Leger med en lille ASP-applikation, men er stødt på et underligt lille
problem med et SQL udtryk. Jeg har to tabeller (Groups/Billedkategorier og
Images/Billeder), som jeg gerne ville have talt antallet af records i. Altså
hvor mange billedkategorier er der og hvor mange billeder er der i alle
kategorierne tilsammen. Til det bruger jeg:
<%
strSQL = "SELECT COUNT(Images.ImageID), COUNT(Groups.GroupID) FROM
Images, Groups"
Call OpenDB(strSQL, strConnect) 'Åbner DB, returnerer objRS
Dim intBilleder, intSektioner
intBilleder = objRS(0)
intSektioner = objRS(1)
Call CloseDB
%>
Men det virker ikke efter hensigten. Hvis jeg f.eks. har 0 billeder og 1
kategori bliver både intBilleder og intSektioner sat lig 0. Det er jo ikke
meningen, når der rent faktisk er en kategori. Hvad er det, der kikser?
Mvh. Voller.
| |
Torben Brandt (27-04-2003)
| Kommentar Fra : Torben Brandt |
Dato : 27-04-03 13:52 |
|
Thomas Voller wrote:
> Leger med en lille ASP-applikation, men er stødt på et underligt lille
> problem med et SQL udtryk. Jeg har to tabeller (Groups/Billedkategorier og
> Images/Billeder), som jeg gerne ville have talt antallet af records i. Altså
> hvor mange billedkategorier er der og hvor mange billeder er der i alle
> kategorierne tilsammen. Til det bruger jeg:
>
> <%
> strSQL = "SELECT COUNT(Images.ImageID), COUNT(Groups.GroupID) FROM
> Images, Groups"
> Call OpenDB(strSQL, strConnect) 'Åbner DB, returnerer objRS
> Dim intBilleder, intSektioner
> intBilleder = objRS(0)
> intSektioner = objRS(1)
> Call CloseDB
> %>
>
> Men det virker ikke efter hensigten. Hvis jeg f.eks. har 0 billeder og 1
> kategori bliver både intBilleder og intSektioner sat lig 0. Det er jo ikke
> meningen, når der rent faktisk er en kategori. Hvad er det, der kikser?
Problemet er at:
FROM Images, Groups
laver en midlertidig tabel, hvor alle poster i de to tabeller parres.
Dernæst tæller du op.
Resultatet er ens for begge COUNTs og er (vist nok) antal poster i
Images gange antal poster i Groups.
Du skal i stedet bruge dette, hvor man laver de to COUNTs hver for sig
og så sætter dem sammen bagefter:
SELECT COUNT(Images.ImageID) as antal FROM Images
UNION
SELECT COUNT(Groups.GroupID) as antal FROM Groups
De kan så hentes ud med:
intBilleder = objRS("antal")
objRS.MoveNext
intSektioner = objRS("antal")
(Læg mærke til objRS.MoveNext, som ikke var der før)
mvh Torben
| |
Thomas Voller (27-04-2003)
| Kommentar Fra : Thomas Voller |
Dato : 27-04-03 19:01 |
|
> Du skal i stedet bruge dette, hvor man laver de to COUNTs
> hver for sig og så sætter dem sammen bagefter
Jamen det er jo smukt. Mange tak.
Mvh. Voller.
| |
|
|