min max
am 22.10.2006 23:53:23 von pg
Hi,
gibt es eine Möglichkeit aus mehreren Tabellen, die Gesamtzahl aller Werte,
den kleinsten und den größten Wert einer gleichnamigen Spalte ( ID ), aus
allen Tabellen mit einer Abfrage zu ermitteln.
Dies liefert nicht immer die richtigen Werte:
(SELECT COUNT(*),min(ID),max(ID) FROM table1 )
UNION
(SELECT COUNT(*),min(ID),max(ID) FROM table2 )
table1 und table2 können übrigens nicht in einer Tabelle zusammengefaßt
werden.
Danke im Voraus.
PG
Re: min max
am 23.10.2006 19:22:38 von newsgroup
Andreas Kretschmer schrieb:
> begin PG schrieb:
>
>>Hi,
>>
>>gibt es eine Möglichkeit aus mehreren Tabellen, die Gesamtzahl aller Werte,
>>den kleinsten und den größten Wert einer gleichnamigen Spalte ( ID ), aus
>>allen Tabellen mit einer Abfrage zu ermitteln.
>
>
> Ja.
>>Dies liefert nicht immer die richtigen Werte:
>>
>>(SELECT COUNT(*),min(ID),max(ID) FROM table1 )
>>UNION
>>(SELECT COUNT(*),min(ID),max(ID) FROM table2 )
>
>
> Ist ja auch flasch.
Nicht, wenn er in einem Select die Werte je Tabelle haben möchte.
Dann müsste man allerdings noch ein all einfügen, also
(SELECT COUNT(*),min(ID),max(ID) FROM table1 )
UNION all
(SELECT COUNT(*),min(ID),max(ID) FROM table2 )
>>table1 und table2 können übrigens nicht in einer Tabelle zusammengefaßt
>>werden.
>
>
> Doch, das wirst Du machen müssen. Hint:
>
> select count(a.id), min(a.id), max(a.id) from (
> select id from table1 union
> select id from table2 ) a;
>
Aber das ist auf jeden Fall falsch (ausser, die IDs in den verschiedenen
Tabellen sind disjunkt).
Stell Dir vor, Du hast in Tabelle1 die Werte 1,2,3,6 und in Tabelle2 die
Werte 1,3,6,8 dann bekommst Du bei UNION
1,2,3,6,8 und das sind nach count 5 Werte und nicht, wie, wie es richtig
wäre (und mit UNION ALL auch funktioniert) 8 Werte.
Aber ich bin mir sicher, das war nur ein Schreibfehler..... ;-)
Michael