PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
13562 00/10/16 14:11:37 RE(5):PB6: テーブルの結合に関して:Part3 By ryochan
13560 00/10/16 10:34:11 RE(4):PB6: テーブルの結合に関して:Part3 By Dera
13559 00/10/16 10:33:28 RE(3):PB6: テーブルの結合に関して:Part2 By Dera
13558 00/10/16 10:31:39 RE(2):PB6: テーブルの結合に関して:Part1 By Dera
13556 00/10/16 00:01:03 RE(1):PB6: テーブルの結合に関して By ryochan
13551 00/10/13 21:32:33 PB6: テーブルの結合に関して By Dera

カテゴリ:データウィンドウ
日付:2000年10月16日 00:01 発信者:ryochan
題名:RE(1):PB6: テーブルの結合に関して

Deraさん、こんばんは。
>A:主となるテーブル
>B:Aの明細テーブル
>C:商品マスタA(検索条件でのみ使用SELECTはしてません)
>D:商品マスタB(検索条件でのみ使用SELECTはしてません)

>?AとBは【A *= B】の関係が成り立ちます。
>?AとCは【A = C】の関係が成り立ちます。
>?BとDは【A = D】の関係が成り立ちます。

3.はB=Dの関係で検索するのですよね。
(でないと、問題にならないと思いますので。)
実際の検索例情報が無い為、
推測で判断しましたが、
以下の様なイメージでしょうか?
2.のJOINは問題ないと思いますので省きました。
勘違いしているかもしれないので
違っていたらコメント下さい。

A
管理番号
100
200
300
400
500

B
管理番号 明細番号  商品番号
  100     1    a1    
  100     2    a2
  200     1    a1
  200     2    c1
  400     1    a1 

D
商品番号
      a1
      a2
      a3
      b1
      b2
      c1

検索
管理番号 明細番号 商品番号
  100     1    a1    
  100     2    a2
  200     1    a1
  200     2    c1
  300    null   null   
  400     1    a1 
  500    null   null

このようなイメージでしたら
WHERE A.管理番号 *= B.管理番号 and  
   B.商品番号 *= D.商品番号
で検索出来そうですが、どうでしょうか?

バージョンが6.5なので上記の書き方でOKだと
思いますが、
確か、外部結合について、MSSQL7.0からは*でJOINするのは
1つのペアしか許されていなく、
複合外部結合は
from (A LEFT OUTER JOIN B on A.管理番号 = B.管理番号)
LEFT OUTER JOIN D on B.商品番号 = D.商品番号
のようにfrom句でJOINしないと
エラーになったと思います。
バージョンアップ時には気をつけてください。

あと、外部結合演算子「*」はT-SQLの書き方なので、
これからは汎用的に書かれた方が
レスがしやすいかなと思います。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS Microsoft SQL Server Client 6.5
Browser (記載なし)

Server SoftWare

OS Windows NT 4.0
DBMS Microsoft SQL Server 6.5
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.