0

複数のテーブルを持つデータベースがあり、次のクエリを使用して文字列 (名前) に一致するレコードを返しています。

MHP表には他にもいくつかありName field(primary key), Num_Sitesますが、私が関心を持っているのはこれらだけです。

MHP_Parcel_Infoテーブルには多くのフィールドがあり、そのうちの 1 つがですName(foreign key)。フィールドがありparcel_id、場合によっては、1 つの名前に対して 1 つのパーセルしかない場合もありますが、名前に対して多くのパーセルが存在する場合もあります。

現在、クエリは、名前に対して複数の区画があるインスタンスの行の 1 つを返します。

私がやりたいことは、名前に複数の区画がある場合、すべての区画をリストに入れることです(フォームのリストボックスに表示できるようにします)。

私の 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 または Entity Framework を使用している (または使用できる) 場合は、データベースからデータを取得してグループ化を一度に行う linq クエリを作成するだけです。

于 2013-07-25T17:51:40.383 に答える