トップ回答者
DataSet内の複数のテーブル間で集計クエリを作成するには

質問
-
下記のページに、DataSet内の複数のテーブル間でリレーションを設定し、各テーブルを別のGridViewに表示する方法が説明されています。
http://www.microsoft.com/japan/msdn/thisweek/300x10/phase2/relationaldata/vb.aspxこれを、例えば集計クエリにして、ひとつのGridViewに表示させるには、どのような方法がありますでしょうか?
このページの例で言えば、[OrderID]・[CustomerID]・[OrderDate]・[総合計金額]をGridViewに表示させたいと思っています。お知恵を拝借いたしたく、どうぞよろしくお願いいたします。
回答
-
すみません。タイトルをよく読むべきでした。m(_ _)m
さて、DataSet内のテーブルですが、これを結合してselectすることは、私の知る限りできません。ADO.NET 2.0の新機能の紹介記事にも、そのような機能はありません。もちろん、ADO.NET 1.1にもありません。実は、私もできたらなぁと以前から思っている機能です。
したがって、そのような集計クエリを作成するウィザードも存在しないでしょう。ADO.NET 2.0 の新しい DataSet 機能
http://www.microsoft.com/japan/msdn/net/adonet/datasetenhance.asp
すべての返信
-
2つのテーブルをjoinして、group byでグルーピングして、sum(UnitPrice) as 総合計金額 のように抽出して、それをDataGridViewで表示すればいいんじゃないでしょうか?
select OrderID, CustomerID, OrderDate, sum(UnitPrice) as 総合計金額 from Orders left outer join [Order Details] on Orders.OrderID = [Order Details].OrderID group by OrderID, CustomerID, OrderDate
-
早速ご返信いただきまして、本当にありがとうございます。
私がサンプルで示したページが、Windowsアプリケーションのもので、あまり適切ではなかったかと反省しております。いま、私の環境では、型付DataSetとしてApp_Codeフォルダのxsdファイル内に、複数のテーブルが存在しております。
これを連結して、集計クエリを作成し、aspxファイルのGridViewにバインドしたいと思っております。この場合、
1)集計SQL文をどのページで発行するべきか(xsdファイル内/GridViewのあるaspxファイル内、あるいはpartialクラスを利用した別ファイルに)
2)ウイザードなどノーコードで、DataSet内の複数のテーブルからクエリを作ることは、そもそもできないのか
そのあたりを知りたいと思っております。また何卒ご教授いただければ幸いです。
-
すみません。タイトルをよく読むべきでした。m(_ _)m
さて、DataSet内のテーブルですが、これを結合してselectすることは、私の知る限りできません。ADO.NET 2.0の新機能の紹介記事にも、そのような機能はありません。もちろん、ADO.NET 1.1にもありません。実は、私もできたらなぁと以前から思っている機能です。
したがって、そのような集計クエリを作成するウィザードも存在しないでしょう。ADO.NET 2.0 の新しい DataSet 機能
http://www.microsoft.com/japan/msdn/net/adonet/datasetenhance.asp -
一応
DataRelationとDataColumn.Expressionプロパティを利用したグループ化処理のサンプル
http://d.hatena.ne.jp/NAL-6295/20061011/p1で、集計はできますが、コーディングの必要がありますので要件には合ってないか・・・。