SUM und Union

SUM und Union

am 28.02.2007 21:25:55 von udio74

Diese Abfrage zählt nicht immer richtig ...

SELECT SUM(x.c) AS t FROM (
SELECT COUNT(*) AS c FROM mt WHERE user=3D'xy'
UNION
SELECT COUNT(*) AS c FROM mt WHERE userL=3D'xy'
) x

Es sollen jeweils die Einträge gezählt werden von user und userL

Wer hat eine Idee was ich falsch gemacht habe?

Re: SUM und Union

am 28.02.2007 21:41:03 von dnoeth

udio74@googlemail.com wrote:

> Diese Abfrage zählt nicht immer richtig ...

Was heisst "nicht richtig"?

> SELECT SUM(x.c) AS t FROM (
> SELECT COUNT(*) AS c FROM mt WHERE user='xy'
> UNION
> SELECT COUNT(*) AS c FROM mt WHERE userL='xy'
> ) x
>
> Es sollen jeweils die Einträge gezählt werden von user und userL

Wie wär's mit "UNION ALL"?

Dieter

Re: SUM und Union

am 28.02.2007 22:16:01 von Johannes Vogel

Hi Unbekannter

udio74@googlemail.com wrote:
> Diese Abfrage zählt nicht immer richtig ...

Was wäre deiner Meinung denn 'richtig'?

> SELECT SUM(x.c) AS t FROM (
> SELECT COUNT(*) AS c FROM mt WHERE user='xy'
> UNION
> SELECT COUNT(*) AS c FROM mt WHERE userL='xy'
> ) x

Wie wär's mit `select count(*) from mt where user='xy' or userL='xy';`?

> Es sollen jeweils die Einträge gezählt werden von user und userL
> Wer hat eine Idee was ich falsch gemacht habe?

Oder noch besser:
select count(*) from mt where user='xy' or user='ab';

Keine Ahnung, was user und userL bedeutet...
HTH, Johannes

Re: SUM und Union

am 01.03.2007 06:39:33 von udio74

> Wie wär's mit "UNIONALL"?

Danke, jetzt klappts

Re: SUM und Union

am 01.03.2007 06:41:03 von udio74

> Oder noch besser:
> select count(*) from mt where user=3D'xy' or user=3D'ab';

so hatte ich es davor, ist nur nicht so schnell weil der Index nur
über jede Spalte einzeln gesetzt ist.

Re: SUM und Union

am 01.03.2007 09:32:53 von Johannes Vogel

Hallo Unbekannter

udio74@googlemail.com wrote:
>> Oder noch besser:
>> select count(*) from mt where user='xy' or user='ab';
>
> so hatte ich es davor, ist nur nicht so schnell weil der Index nur
> über jede Spalte einzeln gesetzt ist.

Hier brauchst du ja aber auch nur eine Spalte.

Johannes