|  | 		    
					
        
         
          
         
	
          | |  | 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.
 
 
 
 
 |  |  | 
 |  |