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 子句的条件。

(这个问题的一个更复杂的版本)。

更新:

测试表A

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

测试表B

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 回答