1. SELF JOIN
SELECT A.FUNCTION_CODE, ' is parent of :', B.FUNCTION_CODE
FROM FUNCTION A, FUNCTION B
WHERE A.CODE = B.PARENT_CODE
ORDER BY A.CODE
2. INNER JOIN = JOIN
3. LEFT JOIN
其实就是INNER JOIN之后把左边表中不匹配的RECORD全部加入到结果集.
4. RIGHT JOIN (理解同上)
5. OUTER JOIN
INNER JOIN之后再把两张表中没有JOIN成功的RECORD全部加进来,可以理解为LEFT JOIN和RIGHT JOIN的并集
-----------------------------------------
ORACLE中:
找出所有的用户姓名及其所属于的组(包括那些不属于任何组的用户)
LEFT JOIN实现:
SELECT U.NAME, G.* FROM USER U LEFT JOIN USER_GROUP_ASSO G ON U.LOGIN_ID = G.LOGIN_ID
与其等价的写法:
SELECT U.NAME, G.* FROM USER U, USER_GROUP_ASSO G
WHERE U.LOGIN_ID = G.LOGIN_ID(+)
这里的'(+)'表示结果集中G.LOING_ID可以为空.也就是要把那些在表G中不存在的LOGIN_ID 也加到结果集中.
当
JOIN条件已被精确指定时(等于某个查询值),这时候用外连接是没有什么意义的.比如我们要找到用户jack所属于的所有的组,这时候如果用:
SELECT U.NAME, G.* FROM USER U, USER_GROUP_ASSO G
WHERE U.LOGIN_ID = G.LOGIN_ID(+)
AND U.LOGIN_ID = 'jack'
其实是没什么意义的,因为JOIN条件LOGIN_ID已经被精确指定为'jack',所以G.LOGIN_ID后面的(+)就有点多余了.
如果查询的是所有年龄为30岁的用户及其所属于的组(包括那些不属于任何组的),则这个(+)还是有用的:当存在不属于任何组的用户时,有(+)则可能会比没用(+)多出一些纪录
SELECT U.NAME, G.* FROM USER U, USER_GROUP_ASSO G
WHERE U.LOGIN_ID = G.LOGIN_ID(+)
AND U.AGE = 30
但如果过滤条件是用表G中的COLUMN,那用(+)也是没有任何意义的了.
NOT EXISTS 实现(只找到那些不属于任何组的用户):
SELECT U.NAME FROM USER U
WHERE NOT EXISTS( SELECT 1 FROM USER_GROUP_ASSO A WHERE A.LOGIN_ID = U.LOGIN_ID)
*回到问题的起始点:
需要找到用户名为admin的用户所属于的所有组(USER->GROUP : 多对多)
TOPLINK中可以用anyOf和anyOfAllowingNone来实现:
其中anyOf是内连接,也就是普通的JOIN操作,不用多解释;
anyOfAllowingNone则是外连接,其后面的参数所对应的COLUMN在最后结果集中是允许为空的.
无代码无真相:(builder建立在表GROUP上)
builder.anyOf('users').get('loginId').equal('admin')
builder.anyOfAllowingNone('users').get('loginId').equal('admin')
显然这里用anyOfAllowingNone没什么作用,和anyOf是一样的效果
总结完毕,谢谢~
分享到:
相关推荐
为数不多的TopLink中文文档,珍惜啊 为数不多的TopLink中文文档,珍惜啊 为数不多的TopLink中文文档,珍惜啊
Oracle Toplink JPA
toplink mysql5 开发工具:Eclipse3.3 for J2ee 简要过程(先导好mysqlJDBC包和toplink包,进mysql建好数据库), 1.新建pojo类,加入Annotation 2.在src目录下建META-INF目录,写好persistence.xml文件 3.写测试类 自动...
toplink-essentials.jar toplink-essentials.jar
介绍toplink的. 主要是toplink的基本概念,高级知识
toplink-api.jar、 toplink-api.jar
还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 toplink-api.jar,toplink-essentials.jar
toplink 和spring 集成包
toplink jpa的中文注解参考,虽然老了一点基本上还是很有用的。 原来下载的一个兄弟的chm,里面的锚链接有问题,反编译后修改了链接,并且保留html格式,使用更方便。
This book introduces the basic concepts and principle for Oracle TopLink. It is suitable for the beginners for ORM and Java cache persistence purposes.
不用说了吧 大家都知道
toplink-essentials-agent.jar
javaee实现jpa的toplink相关jar包。完整版。
This article introduces the concepts of Oracle TopLink Grid--used for Oracle Coherence (In Memory Data Grid).
Oracle Toplink Getting Started introduce some basic concepts of Oracle TopLink software.
是位居第一的Java 对象关系持久性体系结构
JavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源代码 spring-toplinkJavaEE源...
myeclipse_jpa_toplink.swf