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