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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.642 の関連記事表示

<< 0 >>
■642  Re[3]: Oracle のsql文について
□投稿者/ 夏椰 -(2005/06/20(Mon) 10:58:14)

    分類:[VB.NET] 

    まずはBテーブルとB2テーブルの連結部分のみ考えて見ましょう。

    (提示されたものをデータ限定して引用しています)
    Bテーブル
    A-1 2005/01/01 100 AAA
    A-1 2005/01/02 200 AAA

    B2テーブル
    AAA 1 1000
    AAA 2 2000

    をCODE2で連結すると
    A-1 2005/01/01 100 AAA 1 1000
    A-1 2005/01/01 100 AAA 2 2000
    A-1 2005/01/02 200 AAA 1 1000
    A-1 2005/01/02 200 AAA 2 2000
    と抽出されるんですよ。

    なぜかというと BテーブルのCODE2の値に対してB2テーブルに該当するのは2レコードですよね?
    ([NO]=[1,2]の2レコードあるので)
    なんで、Bテーブルの値は一緒だけどB2テーブルの値が異なる行が2つ表示されるんです。

    これをGROUP BYで合算すると・・・
    [KIN]=[100+100+200+200]=[600]
    [KIN2]=[1000+2000+1000+2000]=[6000]
    となってしまうわけです。

    なんで、300、3000って値がほしいのに、600、6000って値が取れるのは
    BテーブルとB2テーブルの結合条件が不足しているからなんです。

    よって、BテーブルとB2テーブルの結合条件をちゃんと考慮すれば
    Miya様が望まれている結果が出るのではないでしょうか?
記事No.637 のレス /0過去ログ1より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -