表可以通过自联接与自身联接。例如,可以使用自联接查找居住在 California 的 Oakland 相同邮码区域中的作者。由于此查询涉及 authors 表与其自身的联接,因此 authors 表以两种角色显示。若要区分这两个角色,必须在 FROM 子句中为 authors 表提供两个不同的别名(au1 和 au2)。这些别名用来限定其余查询中的列名。下面是自联接 Transact-SQL 语句示例:USE pubs
SELECT au1.au_fname, au1.au_lname, au2.au_fname, au2.au_lname
FROM authors au1 INNER JOIN authors au2 
   ON au1.zip = au2.zip
WHERE au1.city = 'Oakland' 
ORDER BY au1.au_fname ASC, au1.au_lname ASC

解决方案 »

  1.   

    搞混了!我创造两个短语,可能可以说清问题:1. 设计连接:是指在定义表的结构的时候定义的、指出表中记录必须与其它记录(包括并且大多是其它表中的记录)相对应关系。2. 查询连接:在查询期间定义的查询视图的记录之间的对应关系。最主要的差别是:设计连接是静态的角度,查询连接是动态的角度。“动态”这个意思楼主好像完全没有理解!例如:在AA表中用A字段作主键,在BB表中也用A字段作主键,你认为这就是说他们用“同一个”主键,这是从“死抠字眼”的角度学习了,而不是从其内涵学习。AA表中的主键与BB表中的主键不可能是同一个,尽管其所用的字段的名字相同又有何妨?两个人,叫同一个名字仍然是两个人;两个苹果都叫做“苹果”但仍然是相互独立的两个。理解这个区别,就比较容易理解“查询视图”的说法。“select ... from A inner join A ....”这个语句中前一个A与后一个A是不同的视图,就好像同一个可执行程序两次运行,那么在内存中就有这同一程序的两个影像——进程。因此,操作第一个视图与操作第二个视图是不同的、独立的、不相关的。查询连接是工作“动态”环境中视图的,不要因为静态定义中的概念而自相烦恼。
      

  2.   

    呵呵,谢谢W_rose兄弟和cgsun兄弟的回答,我以前的学习方法有很多不好的地方,以后一定努力改正,希望你们能留下QQ以后联系并一起讨论问题。
       十分的谢谢。
       对于ROSE兄弟说的动态和静态的区别,我基本上是了解了。
       再一次说一声谢谢。祝你们新年快乐。
       我的QQ是33268519