我有三个表,Foos
,Bars
和多对多表FoosBars
。每个表都有自己的自动递增INT
作为主键,FoosBars
有两列:FooId
(Foos.Id
的外键)和BarsId
(外国Bars.Id
的关键。在我的应用程序(C#)中,我希望使用Foo
表中的列以及关联BarIds的数组/列表填充我的Foos
- 对象。现在,我已经两次查询数据库:一次检索我想要的所有Foos(select * from Foos where X
),然后再次检索FoosBars(select * from FoosBars inner join Foos on Foos.Id=FoosId where X
),然后填充每个Foo
- 我的应用程序中的对象BarIds。
然而,这要求我暂时将FoosBars对象存储在我的应用程序中,并且我需要有一个类来表示FoosBars,我想避免使用它。有没有办法将正确的FoosBars检索为数组?
我有这样的想法:
Select *, (select BarsId
from [this Foo]
inner join FoosBars on Foos.Id=FoosId
) as BarIds
From Foos
Where X
答案 0 :(得分:1)
选择中的子查询必须返回一个值,因此提供的示例无效。此外,当您执行查询时,您应该期望结果集(即行集合),而不是数组或任何其他类型。
没有什么能阻止您以最简单的方式使用它:
select *
from [Foos]
inner join FoosBars on Foos.Id=FoosId
您可能需要考虑根据此结果集更改填充对象的方式。
每行: