【发布时间】:2017-09-04 07:30:03
【问题描述】:
- 我需要一个左连接查询以获得一个视图
- 我有两个过滤器用于这个视图 左右表的参数。
- 我需要右表中的空行。
第一个查询不起作用,但我可以从视图中过滤它:
select * from histoStatut h
left join listStatut ls on h.idstatutid = ls.idstatutid or ls.idstatutid is null
where h.idRequestid = 32651 and ls.IdListeId = 9 ;
第二个查询有效,但视图不接受右表上的过滤器:
select *
from (select * from HistoStatut)T1
left join
(select h.*,ls.IdListeId from HistoStatut h
inner join ListStatut ls on h.IdStatutId = ls.IdStatutId and ls.IdListeId = 9
) T2 on T1.IdHistoStatut = T2.IdHistoStatut
where T1.IdRequestId = 32651
我需要一个可以在视图上使用两个过滤器的解决方案:
CREATE VIEW AS My_Left_Join as
select *
from histoStatut h
left join listStatut ls
on h.idstatutid = ls.idstatutid;
Select * from My_Left_Join where IdListeId = 9 and IdRequestId = 32651
有视图的解决方案吗?
【问题讨论】:
-
你可以跳过
ls.idstatutid is null这个条件,这里不需要。 -
“右表上的过滤器对于视图来说是不可接受的”是什么意思?
-
@Remay,请显示查询的预期结果。
-
您使用的是哪个DBMS?后格雷斯?甲骨文?
-
MSSQL。我用预期的形式和结果完成了我的问题。谢谢