0

以下の選択クエリをエミュレートするデータベース ビューを作成することは可能ですか?

select
 A.Name,
 B.Subscription
from
 TestTableA as A left outer join TestTableB as B on A.ID = B.A_ID and Subscription = 'xxxx';

ビューを使用すると、結合句でサブスクリプションをフィルター処理する方法がわかりません。代わりに、クエリの where 句の条件としてのみ使用できます。

(この質問のより複雑なバージョン)。

アップデート:

TestTableA

ID | Name
---|------
 1 | Joe
 2 | Jane

TestTableB

ID | A_ID | Subscription
---|------|-------------
 1 | 1    | abcd
 2 | 1    | efgh

クエリ結果:

上記の「select」ステートメントを使用すると、結果セットは次のようになります。

Name | Subscription
-----|-------------
Joe  | null
Jane | null  

私が達成しようとしているのは、同じことを返すビューを作成することです。

select * from MyView where Subscription is null Subscription = 'xxxx';

現在、ビューとすぐ上のクエリで達成できるのは以下のとおりです。null サブスクリプションでは、"Joe" を結果に含める方法がありません。

Name | Subscription
-----|-------------
Jane | null 
4

1 に答える 1

0

ビューでユニオンを使用してそれを行う方法を見つけました。

create or replace view TestView as
  select
   A.Name,
   null as Subscription
  from
    TestTableA as A left outer join TestTableB as B on A.ID = B.A_ID
  union
   select
    A.Name,
    B.Subscription
  from
   TestTableA as A left outer join TestTableB as B on A.ID = B.A_ID;

次に、以下のステートメントを使用してビューをクエリすると、必要な結果が得られます。

 select * from TestView where Subscription is null or Subscription = 'xxxx';
于 2012-10-18T03:00:14.100 に答える