从表中检索记录,其中列可能有多行数据

时间:2013-07-25 17:39:44

标签: c# sql winforms ms-access-2010

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

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 + "'"

1 个答案:

答案 0 :(得分:0)

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

因为它被标记为C#和Winforms我假设这是来自.Net应用程序。您将需要执行上面的查询,然后在C#中,您可以对结果使用LINQ GroupBy扩展方法将结果分组到IGrouping对象列表中,这些对象使用名称作为密钥,并将所有宗地信息作为列表中的项目。

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