phpbar.de logo

Mailinglisten-Archive

[dbs] count bei union

[dbs] count bei union

Konstantin Rekk k.rekk at intermatix.de
Fre Jul 9 16:13:15 CEST 2004


On Friday 09 July 2004 16:00, Sebastian Mendel wrote:

> SELECT (SELECT COUNT(*) FROM ...) + (SELECT ...) + ...
>

Danke, hätte ich eigentlich auch selbst drauf kommen können, allerdings werden
hier Datensätze evntl. doppelt gezählt!
Verwende Sybase und möchte nicht die gesamte Datenmenge holen deshalb kein 
num...() Abfragen auf Anwendungsebene möglich.

Das Problem ist allegemein so:
Ein Dokument kann mehrere Publisher haben, die Publisher sind aber unter 
Umständen hierarchisch geordnet.

Etwa so

Dokument( Dok_ID, Titel)
Publisher( Dok_ID, Cor_ID )
Corporation( Cor_ID, Name, IsPartOf)

IsPartOf verweist dabei auf sich selbst,
angenommen wir wollen rausfinden, welche Dokument von einer Corporation
und! ihren Unter-C. verlegt wurden:

(es geht auch mit left joins, scheint aber wesentlich langsamer zu sein)

//erste Ebene, direkt verlegt
select 
	P.Dok_ID 
from 
	Publisher P 
where 
	P.Cor_ID=1000
union
//2. Ebene direkt über IsPartOf zugänglich
select 
	P.Dok_ID
from 
	Publisher P, Corporation C
where 
	P.Cor_ID=C.Cor_ID and C.IsPartOf=1000 
union
//3. Ebene mit selfjoin
select
 	P.Dok_ID
from
	Publisher P, Corporation C, Corporation C1
where 
	P.Cor_ID=C1.Cor_ID and C.Cor_ID=C1.IsPartOf and C.IsPartOf=1000

usw.

nun würde ich gerne die Anzahl direkt mit SQL erhalten... und temp-tables 
möchte ich dazu nicht benutzen, views kann ich mit union nicht erzeugen 
(sybase) !?



Grüße.

-- 
Konstantin Rekk
Berlin
phone: +49 (0) 30 48623452
mobil: 0176 2100 6000
www.rekk.de
www.tanden-aikido.de


php::bar PHP Wiki   -   Listenarchive