C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: DataTable のLeft Join とGroup by


(過去ログ 135 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■79703 / inTopicNo.1)  DataTable のLeft Join とGroup by
  
□投稿者/ RA (1回)-(2016/05/07(Sat) 18:57:50)

分類:[VB.NET/VB2005 以降] 

2つのDataTableをLeft Join して、新たなDataTableに格納する方法がありますか?
select * from DataTable1 Left Join DataTable2 on 結合条件

また、DataTableをGroup byして、countやsumする方法を教えていただけないでしょうか?


宜しくお願いします。

環境は、VB.Net2010です
引用返信 編集キー/
■79704 / inTopicNo.2)  Re[1]: DataTable のLeft Join とGroup by
□投稿者/ WebSurfer (906回)-(2016/05/07(Sat) 21:32:57)
No79703 (RA さん) に返信

> 2つのDataTableをLeft Join して、新たなDataTableに格納する方法がありますか?

DataTable を作る元が何だか分かりませんが、SQL Server とか MySQL とかなら
SELECT クエリで Left Join して、それから DataTable を作るのがよさそうですが、
それができない事情があるのですか?

局所的な部分の質問だけではなく、何故そういうことをしたいのか、全体的なシナリ
オを含めて質問者さんのやりたいことを書くことをお勧めします。そうすれば局所的
なところは無理でも、やりたいことはこうすれば実現できるというような代案も出て
くるかも知れません。

引用返信 編集キー/
■79716 / inTopicNo.3)  Re[2]: DataTable のLeft Join とGroup by
□投稿者/ RA (2回)-(2016/05/08(Sun) 20:59:03)
No79704 (WebSurfer さん) に返信
> ■No79703 (RA さん) に返信
>
>>2つのDataTableをLeft Join して、新たなDataTableに格納する方法がありますか?
>
> DataTable を作る元が何だか分かりませんが、SQL Server とか MySQL とかなら
> SELECT クエリで Left Join して、それから DataTable を作るのがよさそうですが、
> それができない事情があるのですか?

accessで作成されたワークテーブル同志を、Left Joinしたり、Group byして、countやsumして帳票を出そうとしています。
それを、postgresとDataTableを使って帳票を出そうとしています。
accessで作成されたワークテーブルを普通にSQLを書いていたら、
時間がかかるため、DataTableとVb側の処理でやろうとしています。

ところが、DataTableをLeft Joinしたり、Group byする方法がわからなく投稿しました

宜しくお願いします



引用返信 編集キー/
■79721 / inTopicNo.4)  Re[3]: DataTable のLeft Join とGroup by
□投稿者/ WebSurfer (910回)-(2016/05/09(Mon) 12:42:27)
No79716 (RA さん) に返信

> ところが、DataTableをLeft Joinしたり、Group byする方法がわからなく投稿しました

私が知らないだけという可能性は否定し切れませんが、基本的にはできないと思います。

リレーションシップを使って擬似的(ウラワザ的?)に JOIN する方法はあるそうですが。

【VB.NET】2つのDataTableを結合して1つのDataTableにする
http://akirwn.blog79.fc2.com/blog-entry-65.html

質問者さんの言う、

> accessで作成されたワークテーブル同志を、Left Joinしたり、Group byして、countやsum
> して帳票を出そうとしています。
> それを、postgresとDataTableを使って帳票を出そうとしています。

というのがどういうことか理解できないので、質問者さんの目的に合うかどうか分かりませ
んが、環境が .NET 3.0 以降なら LINQ を使うことを考えてはいかがですか?

DataTableのJOINの代わりにLINQ to DataSetを使う
http://blog.jhashimoto.net/entry/20110711/1310342463

方法 : 左外部結合を実行する (C# プログラミング ガイド)
https://msdn.microsoft.com/ja-jp/library/bb397895.aspx

方法: クエリ結果をグループ化する (C# プログラミング ガイド)
https://msdn.microsoft.com/ja-jp/library/bb545971.aspx

ただ、

> accessで作成されたワークテーブルを普通にSQLを書いていたら、
> 時間がかかるため、DataTableとVb側の処理でやろうとしています。

とのことですが、「普通にSQLを書いて」(Access で普通に Left Joinしたり、Group by
したりした SELECT クエリを書いて)それから DataTable を作成した方が、圧倒的に時間
や苦労は少ないと思うのですが・・・

引用返信 編集キー/
■79731 / inTopicNo.5)  Re[3]: DataTable のLeft Join とGroup by
□投稿者/ とくま (8回)-(2016/05/10(Tue) 10:29:59)
No79716 (RA さん) に返信
もともと SQL はデータベースの機能ですから、ローカルの
VB だけでもできるなら冗長ですよね。どこでもできた方が
便利という意見もあるでしょうが、その分の開発費がどこ
かで徴収されているわけで。

まぁ Linq をはじめとする機能追加はたくさんあるので
出来る方法もあるのかもしれませんが。
(知っている人が紹介してくれれば利用する事もあるけど
自分で調べて紹介っていう気にまではならないです)

>accessで作成されたワークテーブルを普通にSQLを書いていたら、
>時間がかかるため
データ件数が多いのに直接リンクテーブルを参照して
加工しているから時間が掛かっているというのであれば、
本来の手法は、ストアドなどで加工した結果テーブルのみ
参照するという事になるのではないでしょうか。
(VB からはストアドのキックと結果テーブルの取得のみ)

というかポスグレにデータが全部入っているなら Access
いらないんじゃないかと言う。。。その辺が既存システムの
改修だからとかローカルファイルをAccessで読込んでるから
とかそういう事情も含めて検討の余地がありそうですん。

今出ている情報だけだと、
・Accessいらない
・VBで加工なんかしない(データベースでやる)
のが普通(=情報がたくさんあって回答がつく方法)の気がします。
従来の手法も含めてどういう手法があって、それぞれの長短
把握した上でシステム設計した結果の今の開発作業ですか?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -