Hallo, ich bin neu in diesem seh interessanten Forum und habe gleich eine Frage: Ich dachte erst trivial - aber komm nicht dahinter. Vielleicht kann mir jemand helfen:
--- Beispiel für View mit Summierung und Unterabfrage bzw. outer Join
--- ich möchte aus einer Abfrage wie unten einen view machen und den dann mit where-Einschränkung aufrufen,
--- muss diese also auf der oberen Ebene angeben können
create table t1
(t1a integer,
t1b integer)
create table t2
(t2a integer,
t2b integer,
t2x char(2))
insert into t1 values
(1,10),
(2,10),
(3,10),
(4,10)
insert into t2 values
(1,10,'X1'),
(2,10,'X2'),
(3,10,'X2'),
(1,11,'X1'),
(2,11,'X2'),
(3,11,'X2')
--- 1.1 Resultat falsch, t1b wird mehrfach summiert:
select t1a as a1, SUM (t1b) as sb1, SUM (t2b) as sb2
from t1
left outer join t2 on t2.t2A=t1.t1A
group by t1a
--- 1.2 man kann von außen filtern, aber sum(t1b) wird natürlich falsch s. 1.1
select t1a as a1, SUM (t1b) as sb1, SUM (t2b) as sb2
from t1
left outer join t2 on t2.t2A=t1.t1A
where t2.t2x='X2'
group by t1a
--- 2.1 Resultat richtig:
select t1a as a1, SUM (t1b) as sb1, sb2 = (select SUM (t2b) from t2 where t1A=t2A)
from t1
group by t1a
--- 2.2 mit Einschränkung im subselect:
select t1a as a1, SUM (t1b) as sb1, sb2 = (select SUM (t2b) from t2 where t1A=t2A and t2x='X2')
from t1
group by t1a
--- Resultat richtig aber ich komme von außen an die Einschränkung nicht ran im Subselect.
--- 2.3 so kann er t2 nicht binden:
select t1a as a1, SUM (t1b) as sb1, sb2 = (select SUM (t2b) from t2 where t1A=t2A)
from t1
where t2.t2x='X2'
group by t1a
Vielen Dank schonmal!
--- Beispiel für View mit Summierung und Unterabfrage bzw. outer Join
--- ich möchte aus einer Abfrage wie unten einen view machen und den dann mit where-Einschränkung aufrufen,
--- muss diese also auf der oberen Ebene angeben können
create table t1
(t1a integer,
t1b integer)
create table t2
(t2a integer,
t2b integer,
t2x char(2))
insert into t1 values
(1,10),
(2,10),
(3,10),
(4,10)
insert into t2 values
(1,10,'X1'),
(2,10,'X2'),
(3,10,'X2'),
(1,11,'X1'),
(2,11,'X2'),
(3,11,'X2')
--- 1.1 Resultat falsch, t1b wird mehrfach summiert:
select t1a as a1, SUM (t1b) as sb1, SUM (t2b) as sb2
from t1
left outer join t2 on t2.t2A=t1.t1A
group by t1a
--- 1.2 man kann von außen filtern, aber sum(t1b) wird natürlich falsch s. 1.1
select t1a as a1, SUM (t1b) as sb1, SUM (t2b) as sb2
from t1
left outer join t2 on t2.t2A=t1.t1A
where t2.t2x='X2'
group by t1a
--- 2.1 Resultat richtig:
select t1a as a1, SUM (t1b) as sb1, sb2 = (select SUM (t2b) from t2 where t1A=t2A)
from t1
group by t1a
--- 2.2 mit Einschränkung im subselect:
select t1a as a1, SUM (t1b) as sb1, sb2 = (select SUM (t2b) from t2 where t1A=t2A and t2x='X2')
from t1
group by t1a
--- Resultat richtig aber ich komme von außen an die Einschränkung nicht ran im Subselect.
--- 2.3 so kann er t2 nicht binden:
select t1a as a1, SUM (t1b) as sb1, sb2 = (select SUM (t2b) from t2 where t1A=t2A)
from t1
where t2.t2x='X2'
group by t1a
Vielen Dank schonmal!