0

我有一个包含多个表的数据库,并且我正在使用以下查询来返回与字符串(名称)匹配的记录。

表中MHP有一个Name field(primary key), Num_Sites和几个,但这些是我唯一关心的。

MHP_Parcel_Info表中有许多字段,其中之一是Name(foreign key)。有一个parcel_id字段,在某些情况下,一个名称可能只有一个地块,但一个名称也可能有多个地块。

就像现在一样,我的查询将返回其中一个行的实例,其中一个名称有多个地块。

我想做的是:如果一个名称有多个包裹,则将所有包裹放入一个列表中(这样我就可以在表单的列表框中显示)。

我的 SQL 技能有限,我不知道如何去做这样的事情。

SELECT MHP_Parcel_Info.*, MHP.NUM_SITES FROM MHP_Parcel_Info INNER JOIN MHP ON " +
                "(MHP_Parcel_Info.MHP_NAME = MHP.MHP_NAME) WHERE MHP_Parcel_Info.MHP_NAME='" + strValue + "'"
4

1 回答 1

0

这不是您可以直接在 SQL 中执行的操作。无法在 SQL 查询中选择父/子结构中的数据 - 您必须将其作为后处理步骤。

由于这被标记为 C# 和 Winforms,我假设这是来自 .Net 应用程序的内部。您将需要按照上面的方式执行查询,然后在 C# 中,您可以对结果使用 LINQ GroupBy扩展方法将结果分组到使用名称作为键的IGrouping对象列表中,并具有所有包裹信息作为列表中的项目。

更好的是,如果您正在使用(或可以使用)LINQ to SQL 或实体框架,您只需编写一个 linq 查询,从数据库中获取数据并立即进行分组。

于 2013-07-25T17:51:40.383 回答