
[英]SQL Update Parent Table Field based on Multiple Child Table Rows with Length Requirement from Each Child Row
[英]Trying to return 1 row for search on multiple values in child table in a view
表1使用联接Table2与表3进行多对多关系。
ID
Table1ID Table3ID
ID SomeData
我想要一个查询,该查询将仅从Table1返回一行的1个实例,以搜索多个Table2.ID
表1:ID
1个
2
3
4
表2
1 1
1 2
2 2
2 3
表3
1个“ foo”
2“栏”
3“ whi”
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!
如果您需要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)
该视图并没有真正增加任何价值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.