| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | [MySQL 5] Lettere forespørgsel Fra : Martin | 
  Dato :  27-02-07 10:14 |  
  |   
            Ret simpelt - Jeg skal tælle antal brugere i en gruppe.
 Gruppe ID'et har jeg fra en anden forspørgsel, så denne er ikke interessant.
 
 Jeg har 2 tabeller
 user og user_to_groups
 
 i min user tabel er der 2 felter som er interessante i denne sammenhæng.
 deleted, activated
 
 min user_to_groups indeholder 2 felter, group_id og user_id
 
 Det der skal tælles er alle brugere der er medlem af gruppe nr X - og 
 brugere som deleted = '0' og activated = '1'
 
 Jeg har prøvet lidt med en subselect, men den kommer ikke med noget 
 korrekt svar. (har også prøvet lignede varianter af nedenstående)
 
 SELECT
    COUNT(*)
 FROM
    user AS usr,
    user_to_groups AS utg
 WHERE
    utg.group_id = '1'
    AND
    (
    SELECT
       COUNT(*)
    FROM
       usr
    WHERE
       usr.activated = '1'
       AND
       usr.deleted = '0'
    )
 GROUP BY
    utg.user_id
 
 
 (Som skrevet MySQL 5)
  
            
             |   |   
            
        
 
            
         
           Jens Gyldenkærne Cla~ (27-02-2007) 
         
	
            | Kommentar Fra : Jens Gyldenkærne Cla~ | 
  Dato :  27-02-07 10:59 |  
  |   
            Martin skrev:
 
 > Jeg har 2 tabeller
 > user og user_to_groups
 >
 > i min user tabel er der 2 felter som er interessante i denne
 > sammenhæng. deleted, activated
 >
 > min user_to_groups indeholder 2 felter, group_id og user_id
 >
 > Det der skal tælles er alle brugere der er medlem af gruppe nr
 > X - og brugere som deleted = '0' og activated = '1'
 
 
 Hvordan skal dit "og" læses?
 
 a) Tæl brugere der har deleted=0, activated=1 og er medlem af
 gruppe X
 
 b) Tæl brugere der har deleted = 0 og activated = 1, og tæl brugere
 der er medlem af gruppe X
 
 
 Hvis det er a, skal du lave et join:
 
 SELECT group_id, COUNT(*) as antal
 FROM user INNER JOIN user_to_groups
 ON user.user_id = user_to_groups.user_id
 WHERE user.deleted = 0
 AND user.activated = 1
 GROUP BY group_id
 
 Ovenstående vil gruppere antallet af aktiverede og ikke slettede
 brugere for hver gruppe. Hvis det kun skal være til én gruppe, kan
 du tilføje group_id = 1 i WHERE-delen.
 
 
 Du skal dog være opmærksom på at du ikke får 0-grupper med i
 resultatet - hvis der fx er en gruppe hvor der kun er inaktive
 brugere. Det samme gælder for grupper der slet ikke har nogen
 medlemmer (ingen poster i user_to_groups). Hvis de skal med, kan
 man fx lave en union-forespørgsel.
 -- 
 Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
 eller Brønshøj, max 6000 pr. måned.
 Kontakt pr. mail - nospam(at)gyros.dk
 Jens Gyldenkærne Clausen
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |