表1使用表2加入与表3的多对多关系。
ID
Table1ID Table3ID
ID SomeData
我想要一个只从Table1返回一行实例的查询,以搜索多个Table2.ID的
表1: ID
1
2
3
4
表2
1 1
1 2
2 2
2 3
表3
1“foo”
2“bar”
3“whiz”
4“爆炸”
现在我可以使用子查询
进行连接SELECT * FROM Table1
WHERE ID in (
SELECT DISTINCT(T1.ID)
FROM Table1 T1 LEFT OUTER JOIN Table2
ON T1.ID = T2.Table1ID
WHERE T2.Table3ID in (1,2)
)
其中1和2是我正在搜索的值。
现在我想把它包装在一个视图中,这样我可以查询类似的东西:
Select ID, {other stuff from T1} from vwGetData
其中的值(1,2)
这可能吗?希望我说得够清楚
TIA!
答案 0 :(得分:1)
如果您需要Table1中的某些值,则查询应如下所示:
select T1.*
from Table1 as T1
where T1.ID in (select T2.Table1ID
from Table2 as T2
where T2.Table2ID in (1, 2))
无法创建视图,并允许您将(1,2)上的过滤器添加为视图查询的where子句。
针对视图的示例查询仅检索ID列,以便获取您不需要在查询中涉及Table1
的信息。
select distinct T2.Table1ID as ID
from Table2 as T2
where T2.Table2ID in (1, 2)
您可以创建一个视图(没有distinct
部分),但这根本没有意义吗?
create view v_Table2
as
select Table1ID, Table2ID
from Table2
像这样使用:
select distinct T2.Table1ID as ID
from v_Table2 as T2
where T2.Table2ID in (1, 2)
视图并没有真正添加任何值。