我想问一下自连接是怎么一回事~?

13057223533 2004-01-22 10:22:19
昨天看了自连接,没搞的很明白。我个人认为,所谓自连接。就是主键对主键的匹配,但是有一个问题是这样的。一列A在表AA里是主键。还是那一列A在表BB里是主键,这种情况可以出现吗?因为书上没有说做为主键出现在一个表里,在另一个表里就不能出现,书上只说了。在另一个表里做外键。所以我始终搞不懂到底是怎么会事!请SQL的高手和SQL的朋友HELP ME。
THANKS :)~
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
13057223533 2004-01-24
  • 打赏
  • 举报
回复
呵呵,谢谢W_rose兄弟和cgsun兄弟的回答,我以前的学习方法有很多不好的地方,以后一定努力改正,希望你们能留下QQ以后联系并一起讨论问题。
十分的谢谢。
对于ROSE兄弟说的动态和静态的区别,我基本上是了解了。
再一次说一声谢谢。祝你们新年快乐。
我的QQ是33268519
w_rose 2004-01-23
  • 打赏
  • 举报
回复
即使仅仅把一个程序装入内存运行,这个运行着的动态生成的东西也不再是原来保存在磁盘上的那个静态的的东西了!一个人如果两次踏入同一条河流,那么两次必然有所不同!从这个角度学习、研究任何概念,就不会“死抠字眼”了!
w_rose 2004-01-23
  • 打赏
  • 举报
回复
任何概念,都有其“动态实现”方式。静态概念不能做任何事,只能是帮助设计、构成动态过程而已。因此只去“死抠字眼”而不去深入学习其实现机理(复杂的概念都是可以用很简单的机理来实现和说明的),很容易陷进去。
w_rose 2004-01-23
  • 打赏
  • 举报
回复
搞混了!

我创造两个短语,可能可以说清问题:

1. 设计连接:是指在定义表的结构的时候定义的、指出表中记录必须与其它记录(包括并且大多是其它表中的记录)相对应关系。

2. 查询连接:在查询期间定义的查询视图的记录之间的对应关系。

最主要的差别是:设计连接是静态的角度,查询连接是动态的角度。“动态”这个意思楼主好像完全没有理解!例如:在AA表中用A字段作主键,在BB表中也用A字段作主键,你认为这就是说他们用“同一个”主键,这是从“死抠字眼”的角度学习了,而不是从其内涵学习。AA表中的主键与BB表中的主键不可能是同一个,尽管其所用的字段的名字相同又有何妨?两个人,叫同一个名字仍然是两个人;两个苹果都叫做“苹果”但仍然是相互独立的两个。理解这个区别,就比较容易理解“查询视图”的说法。

“select ... from A inner join A ....”这个语句中前一个A与后一个A是不同的视图,就好像同一个可执行程序两次运行,那么在内存中就有这同一程序的两个影像——进程。因此,操作第一个视图与操作第二个视图是不同的、独立的、不相关的。查询连接是工作“动态”环境中视图的,不要因为静态定义中的概念而自相烦恼。
cgsun 2004-01-22
  • 打赏
  • 举报
回复
表可以通过自联接与自身联接。例如,可以使用自联接查找居住在 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

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧