/ 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
[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

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste