首页 > 代码库 > Oracle 第13章 当一个查询依赖另一个查询

Oracle 第13章 当一个查询依赖另一个查询

 高级子查询   子查询(subquery) 

知识点一:  多表连接之间的关系

例如 希望知道哪种种类的书籍已经借出去了。

select distinct c.parent_catagory, c.sub_category

from category c, bookshelf b, bookshelf_checkout bc

where c.category_name = b.category_name and b.title = bc.title

distinct 关键字 去重

此例中的3表关联的 之间的关系:要连接3表必须把其中两个表与第三个表连接起来。

 1.CATEGORY 表连接到 BOOKSHELF表, 它们连接的结果再与 BOOKSHELF_CHECKOUT表连接。  DISTINCT字句去重 

 注意:并不是每个表都与其它每个表相连接。表之间的连接通常比被连接的表的数量少1.

知识点二: 相关子查询

a.where 子查询      where字句 可以包含SELECT语句的子查询, where 子查询的子句where 还可以嵌套  

select distinct c.parent_categorty, c.sub_category

from categort c 

where category_name in 

  (select category_name from bookshelf

   where title in

     (select title from bookshelf_checkout) 

  );

这个查询与知识点一中的查询结果一样

a: 子查询可以引用在其主查询中使用的表的列(即下例中 bookshelf 表中没有title列)

  select title from bookshelf_author

  where title in

    (select title from bookshelf

    where author_name = ‘setphena hay gould’)

 

Oracle 第13章 当一个查询依赖另一个查询