嵌套记录是sql server
上述查询提供了此错误: 子查询返回了多个值。当子查询在=、!=、=或者在使用子查询时 有人能解释为什么存在这种限制吗 我的想法是,这种多维查询非常适合直接从数据库构建OO对象,只需一个查询 编辑: 这个问题相当理论化。为了解决这个实际问题,我将使用一个连接或简单地完成两个查询,但我想知道是否有什么东西阻止您将列作为表类型返回(在SQLServer2008中,您可以创建表类型) 假设代码中有相应的类,想想Linq2Sql嵌套记录是sql server,sql,oop,Sql,Oop,上述查询提供了此错误: 子查询返回了多个值。当子查询在=、!=、=或者在使用子查询时 有人能解释为什么存在这种限制吗 我的想法是,这种多维查询非常适合直接从数据库构建OO对象,只需一个查询 编辑: 这个问题相当理论化。为了解决这个实际问题,我将使用一个连接或简单地完成两个查询,但我想知道是否有什么东西阻止您将列作为表类型返回(在SQLServer2008中,您可以创建表类型) 假设代码中有相应的类,想想Linq2Sql select Table1.colID, Table1.colName,
select Table1.colID, Table1.colName,
(select * from Table2 where Table2.colID = Table1.colID) as NestedRows
from Table1
公共类表1
{
公共int colID,
公共字符串colName,
公共清单2;
}
我希望能够用一个查询直接填充这个类的实例,您最好在两个表之间使用一个内部联接,只需从每个表中选择所需的行
public class Table1
{
public int colID,
public string colName,
public List<Table2> table2s;
}
但是,请记住,表1中的数据将针对表2中的每个匹配记录重复。虽然我相信我发布的查询将以您正在寻找的形式获取数据,但我认为这不是查询数据库的最佳方法。我要么执行单独的查询,要么将单独的查询放入存储过程并返回多个结果集。最好在两个表之间使用内部联接,并从每个表中选择所需的行
public class Table1
{
public int colID,
public string colName,
public List<Table2> table2s;
}
但是,请记住,表1中的数据将针对表2中的每个匹配记录重复。虽然我相信我发布的查询将以您正在寻找的形式获取数据,但我认为这不是查询数据库的最佳方法。我要么执行单独的查询,要么将单独的查询放入存储过程并返回多个结果集。因为select子句中的子查询必须“插入”到外部查询结果集每一行的列值中。不能将一组值放入结果集的单个单元格(单行的单个列)中
您需要使用内部联接。联接表返回的多行将作为最终结果集中的多行输出 因为select子句中的子查询必须“插入”到外部查询结果集每行的列值中。不能将一组值放入结果集的单个单元格(单行的单个列)中
您需要使用内部联接。联接表返回的多行将作为最终结果集中的多行输出 我认为您要查找的查询可能是:
SELECT tab1.colID, tab1.colName, tab2.Column1, tab2.column2
FROM dbo.Table1 AS tab1
INNER JOIN dbo.Table2 AS tab2
ON tab1.colID = tab2.colID
子查询在WHERE子句中更为常用(至少我是这样认为的)。我认为您要查找的查询可能是:
SELECT tab1.colID, tab1.colName, tab2.Column1, tab2.column2
FROM dbo.Table1 AS tab1
INNER JOIN dbo.Table2 AS tab2
ON tab1.colID = tab2.colID
子查询在WHERE子句中使用得更为典型(至少我是这样认为的)。似乎您希望从表2中为表1中的每一行返回一个记录集(多列多行)。如果这是正确的,也许您可以从数据库返回XML格式的数据。像这样的
select Table1.colID, Table1.colName,Table2.*
from Table1 inner join Table2 ON Table1.colID = Table2.colID
然后,对于表1中的每一行,您将在XML中获得表2数据的多个子节点
从数据库返回XML以及在前端加载数据结构可能会影响性能。我不一定认为这是最好的方法,但它可能值得研究。似乎您希望从表2中为表1中的每一行返回一个记录集(多列和多行)。如果这是正确的,也许您可以从数据库返回XML格式的数据。像这样的
select Table1.colID, Table1.colName,Table2.*
from Table1 inner join Table2 ON Table1.colID = Table2.colID
然后,对于表1中的每一行,您将在XML中获得表2数据的多个子节点
从数据库返回XML以及在前端加载数据结构可能会影响性能。我不一定认为这是最好的方法,但它可能值得研究。如果您有一列类型为table的列,该怎么办?在sql server 2008中,您可以定义表的类型,据我所知,“表”数据类型可用于局部变量,或临时存储结果集以供以后处理。现在可以从外部客户端向T-SQL代码传递,但仍然不能将表中的列声明为“表”。有人知道吗?如果你有一个table类型的列呢?在sql server 2008中,您可以定义表的类型,据我所知,“表”数据类型可用于局部变量,或临时存储结果集以供以后处理。现在可以从外部客户端向T-SQL代码传递,但仍然不能将表中的列声明为“表”。有人知道吗?如果你真的只想要一行,你需要使用GROUP BY子句和合适的聚合函数,或者使用带有原始子查询的TOP 1(和合适的ORDER BY子句)。但听起来他并不是只想要一行。据我所知,他确实想要表2中的多行。我还假设表1包含colID的主键。如果您真的只需要一行,则需要使用GROUP BY子句和适当的聚合函数,或者使用带有原始子查询的TOP 1(和适当的ORDER BY子句)。但听起来他并不是只需要一行。据我所知,他确实想要表2中的多行。我还假设表1包含colID的主键,这很好,是“for xml”的想法,但没有尝试将sql编写为联接。也许这是一个使用Linq2SqlXML提供程序的想法。可能会有一点性能开销,但非常优雅,我认为这是值得的:)这很好,是“for xml”的想法,但没有尝试将sql编写为连接。也许这是一个使用Linq2SqlX的想法