SQL基础[15]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 s98 的 blog

    到现在为止,你只尝试了用一句sql查询从一个表中取出数据。你也可以用一个select语句同时从多个表中取出数据,只需在select语句的from从句中列出要从中取出数据的表名称即可:

       

    select au_lname ,title  from  authors, titles  

 

    这个select语句执行时,同时从表authors和表titles中取出数据。从表authors中取出所有的作者名字,从表titles中取出所有的书名。在isql/w程序中执行这个查询,看一下查询结果。你会发现一些奇怪的出乎意料的情况:作者的名字并没有和它们所著的书相匹配,而是出现了作者名字和书名的所有可能的组合,这也许不是你所希望见到的。

    出了什么差错?问题在于你没有指明这两个表之间的关系。你没有通过任何方式告诉sql如何把表和表关联在一起。由于不知道如何关联两个表,服务器只能简单地返回取自两个表中的记录的所有可能组合。

    要从两个表中选出有意义的记录组合,你需要通过建立两表中字段的关系来关联两个表。要做到这一点的途径之一是创建第三个表,专门用来描述另外两个表的字段之间的关系。

    authors有一个名为au_id的字段,包含有每个作者的唯一标识。表titles有一个名为title_id的字段,包含每个书名的唯一标识。如果你能在字段au_id和字段title_id 之间建立一个关系,你就可以关联这两个表。数据库pubs中有一个名为titleauthor的表,正是用来完成这个工作。表中的每个记录包括两个字段,用来把表titles和表authors关联在一起。下面的select语句使用了这三个表以得到正确的结果:

 

    select  au_name,title from authors,titles,titleauthor 

                            where  authors.au_id=titleauthor.au_id

本文关键:SQL基础
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top