我经常确切地知道我想要什么,并且知道表格是如何相关的,但是当谈到连接时,我真的很难将字面语言知识转换为SQL语法.你有什么提示或技巧,你可以分享过去曾经为你工作过吗?
这是一个基本但不好的例子:
"我有类别,它有一对多的产品,有一对多的变种,有一对多的来源.我需要属于XYZ类的所有来源."
我想你会做一些事情,你可以用掉某些语言术语并用SQL语法替换它们.您能否根据类似的概念分享您如何制定查询?谢谢!
使用SQL查询设计器可以轻松地在可视化表集合中创建加入查询,然后如果您想了解它是如何工作的,只需调查它,这就是我学习它的方式.在你尝试之前,你不会注意到它是多么迷人.
SQL连接的可视化表示 - 解释SQL JOIN的演练.
在SQL-Server 2005中完成SQL-Server Join,内部联接,左外部联接,右外部联接,完全外部联接的参考(查看快照下面的内容).
ToTraceString实体Frameork"的ObjectQuery(即添加Include选型它)也是学习的好方法.
SQL-服务器联接类型(对每个具体的例子连接类型):
INNER JOIN -在指定的两个表之间的匹配行INNER JOIN基于具有匹配的数据一列或多列的语句.优选地,连接基于参照完整性,强制执行表之间的关系以确保数据完整性.
只是为上面的基本定义添加一些注释,通常该INNER JOIN选项被认为是应用程序和/或查询中最常用的连接.虽然在某些环境中就是这种情况,但它实际上取决于应用程序所需的数据库设计,参照完整性和数据.因此,请花时间了解所请求的数据,然后选择正确的连接选项.
虽然大多数连接逻辑基于指定的两列之间的匹配值,但是也可以包括使用大于,小于,不等于等的逻辑
.LEFT OUTER JOIN - 基于join子句中指定的两个表,所有数据从左表返回.在右表中,除了NULL左表中存在记录的值之外,还返回匹配数据,但不在右表中.
要记住的另一项目的是,LEFT和RIGHT OUTER JOIN逻辑是彼此相对的.因此,您可以更改特定连接语句中表的顺序,或者JOIN从左向右更改,反之亦然,并获得相同的结果.
RIGHT OUTER JOIN - 基于join子句中指定的两个表,从右表返回所有数据.在左表中,除了NULL在右表中存在记录但在左表中不存在记录的值之外,还返回匹配数据.
自联接 - 在这种情况下,为了匹配同一个表中的数据,使用两个不同的别名指定同一个表两次.
CROSS JOIN - 基于join子句中指定的两个表,如果WHERE子句对行进行过滤,则会创建笛卡尔积.笛卡尔积的大小基于左表中的行数乘以右表中的行数.使用时请注意谨慎CROSS JOIN.
FULL JOIN - 基于join子句中指定的两个表,无论匹配数据如何,都从两个表返回所有数据.

| 归档时间: |
|
| 查看次数: |
2356 次 |
| 最近记录: |