Irgendwie ist mir eigentlich garnicht klar, was genau gewünscht ist.
SQL-Code:
create table test (id int);
insert into test (id) values (1);
create view v1_1 as select * from test t1 where t1.id = 1;
create view v1_0 as select * from test t1 where t1.id = 0;
create view v1_1_0 as select * from test t1 where t1.id = 1 or t1.id = 0;
select t1.id as id1, t2.id as id2, t3.id as id3 from
v1_1 t1 -- mit der Beispieltabelle eigentlich eher sinnfrei
left outer join test t2 on t2.id = t1.id
left outer join test t3 on t3.id = t1.id; -- steht alles schon im ersten left ...
select t1.id as id1, t2.id as id2, t3.id as id3 from
v1_0 t1 -- mit der Beispieltabelle eigentlich eher sinnfrei
left outer join test t2 on t2.id = t1.id
left outer join test t3 on t3.id = t1.id; -- steht alles schon im ersten left ...
select t1.id as id1, t2.id as id2, t3.id as id3 from
v1_1_0 t1 -- mit der Beispieltabelle eigentlich eher sinnfrei
left outer join test t2 on t2.id = t1.id
left outer join test t3 on t3.id = t1.id; -- steht alles schon im ersten left ...
-- hier müsste man mit 'nem "drumgelegten" select ggfls. noch Sätze mit gleicher id1 zusammenfassen
-- sum, max ... und group by id1
select t1.id as id1, t2.id as id2, null as id3 from
v1_1 t1
left outer join test t2 on t2.id = t1.id
union
select t1.id as id1, null as id2, t3.id as id3 from
v1_0 t1
left outer join test t3 on t3.id = t1.id;
oder
oder
oder
...
Das Beispiel ist zwar geeignet um festzustellen, dass x und y zum gleichen Ergebnis kommen, während z was anders behauptet, aber es ist nicht geeignet um zu verifizieren ob überhaupt eines der Ergebnis der umzusetzenden Aufgabenstellung entspricht, geschweige denn nach sinnvollen und verifizierbaren Alternativen zu suchen.
Bitte einfach mal die Aufgabenstellung verbal beschreiben, dann können wir weitersehen, welche Lösungsmöglichkeiten existieren.