Intersect Problem

Hallo,
ich versuche zwei Queries die Zeilenfragmente derselben Tabelle als Ergebnis liefert via intersect zu verknüpfen. Ausgangssituation dabei:

o Die Tabelle enthält immer eine Spalte „pk“.
o Query 1 ist benutzerdefiniert. Bekannt ist lediglich die Ergebnistabelle.
o Query 1 selektiert entweder nur „pk“ oder die gesamte Zeile. Was von beiden weiß ich nicht a-priori.
o Query 2 kann frei gewählt werden.

Bsp.

select p.pk from Products p where p.code=‚bmw‘ intersect select pk from Products where pk in (‚id1‘,‚id2‘)

Dabei ist der fette Teil die benutzerdefinierte Query 1, der zweite intersect Operand, die frei zu wählende Query 2. Das Bsp. klappt. Wird statt dessen

select p.* from Products p where p.code=‚bmw‘ intersect select pk from Products where pk in (‚id1‘,‚id2‘)

verwendet sind die Spalten nicht mehr kompatibel. Ich suche evtl. sowas wie eine Projektionsfunktion, die man um Query 1 packen kann, um auf die Spalte „pk“ zu projezieren, unabhängig davon welches Zeilenfragment hier selektiert wird (angenommen es enthält mindestens die Spalte „pk“). Gibt es sowas (unter Oracle 9i) oder eine andere Lsg. ?

Gruss
Enno