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