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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.