min max

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 07:06:03 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

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

Re: min max

am 23.10.2006 20:47:45 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: min max

am 27.10.2006 16:34:51 von pg

Danke Euch für die Hilfe.
Jetzt hab ich das Prinzip endlich kapiert.