に私はCorelatedサブクエリについての簡単な質問があります。次のようにオラクルALL SUBQUERY
テーブルとデータがある:
CREATE TABLE AUTHORS
(
NAME VARCHAR2(10 BYTE)
);
Insert into AUTHORS Values ('john');
Insert into AUTHORS Values ('bill');
Insert into AUTHORS Values ('dave');
CREATE TABLE BOOKS
(
NAME VARCHAR2(10 BYTE),
PRICE INTEGER
);
Insert into BOOKS Values ('john', 101);
Insert into BOOKS Values ('john', 200);
Insert into BOOKS Values ('john', 300);
insert into books values ('bill', 200);
Insert into BOOKS Values ('bill', 10);
Insert into BOOKS Values ('dave', 5);
COMMIT;
質問:ここでの「ジョンは」> 100の価格ですべての書籍を持っています。
しかし、私は、クエリ、次を使用する場合、一列のみが返されます。
select * from
authors a
where 100 < all(select price from books b where a.nAME = b.NAME);
著者の表の中に1レコードしかありません. – Rams
「JOHN」は価格が> 100のすべてのボックを持ち、次に「JOHN」のみが外部クエリ/演算子「100」によって取り出されます100が<10(10)以上であり、 'dave'の場合 - >' 100(101,200,300)'が ' 100が5より小さくないのでALL(5) 'も偽です。クエリが返すべきと思いますか? –
krokodilko
@krokodilko - はい、すべての本が100を超える著者の表にはレコードしかありません。私はそれを見逃したようです。 – oradbanj