PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
7615 99/08/13 11:49:28 RE(4):PB6.5: anyとall By シャインMR
7612 99/08/13 11:23:17 RE(3):PB6.5: anyとall By てとらぽっと
7609 99/08/13 10:47:51 RE(2):PB6.5: anyとall By シャインMR
7607 99/08/13 10:36:45 RE(1):PB6.5: anyとall By てとらぽっと
7606 99/08/13 10:17:25 PB6.5: anyとall By シャインMR

カテゴリ:スクリプトの記述
日付:1999年08月13日 11:23 発信者:てとらぽっと
題名:RE(3):PB6.5: anyとall

シャインMRさん、「いまいち」の部分が良く分かりました。

>以下の文ではすべて一致すると思うのですが
>答えはCOUNT = 0 です。

>   SELECT COUNT(*)
>    FROM Table_1
>WHERE (col_1,col_2 ) = all
> ( SELECT col_1,col_2 FROM Table_1  ;

>allのすべて一致という条件がいまいち分かりません。

「allのすべて」というのは、あるカラムが【複数】の値と一致するかという意味です。
この例ではさらにそのカラムが複数あるために混乱しますので、単純にします。

WHERE col_1 = all ( SELECT col_1 FROM Table_1 ) ;

SELECT col_1 FROM Table_1 は複数の行を返すでしょうから、
Table_1.col_1 が持つすべての値と一致した col_1 、
たとえば以下のようになりますので、

WHERE col_1 = all ( 1,2,3,5 ) ;

こんな col_1 は存在し得ないのです。こういうときは allではなく、
any を指定して、Table_1.col_1 が持つどれかの値と一致した col_1 を探します。


カラムの組み合わせが2つ(col_1とcol_2)になっても同じことです。
記述した順番通り、Table_1.col_1 は col_1と、Table_1.col_2 は col_2 と比較されます。
Table_1 と Table_1 を比較されているので、結果は正しくTable_1の行数と一致します。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS Oracle SQL*Net 8
Browser InternetExplorer5.X

Server SoftWare

OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)

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