表1使用联接Table2与表3进行多对多关系。

表格1

ID

表2

Table1ID Table3ID

表3

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!

===============>>#1 票数: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)

该视图并没有真正增加任何价值。

  ask by ozz translate from so

未解决问题?本站智能推荐:

1回复

SQL将多个行插入第二个/子表

我一直呆在整个下午,最后放弃了。 我需要每月定期为多个客户创建月度发票。 因此,我从[Customers-Main]表中获取了数据,并创建了我需要的所有[INVOICES]行。 但是,我无法让[客户-发票]正确填充每张发票。 应该发生的是,[发票-库存链接]填充有[客户-发票]的正确
1回复

将多个行中的值作为具有group by的列放在多个列上

是否可以在多列上按组返回多个行值 与众不同。 如果我的表是: QUantityTypeID数量OrderDate CompanyID TypeName -------------- -------- ----------- ---------------- - -----
5回复

如何从视图中删除“重复”行?

当我加入主表时,我有一个工作正常的视图: 但是我需要添加以下连接: 虽然我添加了DISTINCT ,但仍然会得到一个“重复”的行。 我说“重复”,因为第二行有不同的值。 但是,如果我将LEFT OUTER更改为INNER JOIN ,则会丢失具有这些“重复”行的客户端的所
1回复

在@ table变量中返回多个值

当我调用该函数时,它应返回2个值,但这里只返回@stDeptCod值而不是@peopleID 。 这里有什么我想念的吗? 谢谢
1回复

基于多个子表行的SQL更新父表字段

对于parent / child关系,我具有以下示例表结构。 parent表 child表 我有一个要求,指定子表行中的某些字段需要连接在一起并放在父表中。 如果可能,我想在一个SQL查询中完成此操作。 我写的更新语句如下。 但是我只得到以下结果。 我希
2回复

返回视图中两列中的一列 - 无论哪一列都不为空

我有一个有三列的表: 我想创建一个SELECT语句,它将返回ColumnA,然后是第二列,它将显示ColumnB的值,除非ColumnB为null; 否则它将显示ColumnC的值,即使它是NULL。 我可以使用IF语句吗? 就像是: **如果我这样做,下一步将返回连接列的
3回复

mssql中具有多个表和计算值的可更新视图

mssql2005中具有庞大代码库的庞大数据库,具体取决于该数据库的结构。 我有大约10个相似的表,它们都包含文件名或文件的完整路径。 完整路径始终取决于项目ID,因此将其存储在数据库中没有任何意义。 从这些表中获取有用的数据有点像这样: 我想为所有这些表创建一个视图,以便使用
5回复

为什么SQL中的max函数返回多个值

我想展示薪水最高的球员。 输出为: 我只想显示(8000波什,因为他是薪水最高的球员)。
1回复

为什么我的SQL表之一不允许我在MS Access的电子表格视图中进行更新?

情况 : 我在SQL中创建了很多表 这些表链接到MS Access 我可以很容易地将“新条目”“添加”到除一个表之外的所有表中 该表包含Foreign key参考(其他参考也是如此) 所有表都是以相同的方式创建和链接的 问题 :
9回复

如何在一列中返回多个值(T-SQL)?

我有一个表UserAliases ( UserId, Alias ),每个用户有多个别名。 我需要查询它并返回给定用户的所有别名,诀窍是将它们全部返回到一列中。 例: 我希望查询结果采用以下格式: 谢谢。 我正在使用SQL Server 2005。 ps实际的