Zählen mit count()

Zählen mit count()

am 09.07.2007 21:35:29 von info

Hallo in die Runde,

ich habe folgendes Problem: Ich muss bei folgendem Query

SELECT
a.id
FROM
tab_a a,
tab_b b
WHERE
a.id =3D b.id AND
a.status > 0
a.id IN (
SELECT
c.id
FROM
tab_c c
WHERE
c.role IN (1,2)
GROUP BY
c.id
HAVING
COUNT(c.id) >=3D 0 AND
COUNT(c.id) <=3D 4
)

ebenfalls die mit einem COUNT von "0" berücksichtigen. Da Problem an
diesem Query ist, das es keine mit dem einem Count von 0 gibt, da
diese durch den c.role IN (1, 2) bereits weggefiltert werden. Ich
benötige diese aber zwingend.

Irgendeine Idee?

Danke für Antworten.
Björn.

Re: Zählenmit count()

am 10.07.2007 04:22:57 von B.Steinbrink

On Mon, 09 Jul 2007 12:35:29 -0700, info wrote:
^^^^
Hier sind echte Namen erwünscht.

> Hallo in die Runde,
>
> ich habe folgendes Problem: Ich muss bei folgendem Query
>
> SELECT
> a.id
> FROM
> tab_a a,
> tab_b b
> WHERE
> a.id = b.id AND
> a.status > 0
> a.id IN (
> SELECT
> c.id
> FROM
> tab_c c
> WHERE
> c.role IN (1,2)
> GROUP BY
> c.id
> HAVING
> COUNT(c.id) >= 0 AND
> COUNT(c.id) <= 4
> )
>
> ebenfalls die mit einem COUNT von "0" berücksichtigen. Da Problem an
> diesem Query ist, das es keine mit dem einem Count von 0 gibt, da diese
> durch den c.role IN (1, 2) bereits weggefiltert werden. Ich benötige
> diese aber zwingend.
>
> Irgendeine Idee?

Ohne von meiner Kristallkugel genaueres erfahren zu haben, schätze ich du
möchtest zählen, wie oft eine id in der Rolle 1 oder 2 vorkommt, ja? Ohne
die Tabellen zu kennen, sieht das zwar gerade komisch aus, aber bitte:

SELECT
id
FROM
tab_c
GROUP BY
id
HAVING
SUM(role in (1,2)) BETWEEN 0 AND 4

Björn

Re: Zählen mit count()

am 10.07.2007 06:41:23 von info

On 10 Jul., 04:22, Björn Steinbrink wrote:
> On Mon, 09 Jul 2007 12:35:29 -0700, info wrote:
>
> ^^^^
> Hier sind echte Namen erwünscht.

Super! Vielen Dank für die schnelle Antwort.
Björn Ahlers