日期:2014-05-17  浏览次数:21223 次

oracle中查询记录的小问题,在线等
在EMPLOYEES 和DEPARTMENTS表里检查下列数据。
EMPLOYEES
LAST_NAME DEPARTMENT_ID SALARY
Getz 10 3000
Davis 20 1500
King 20 2200
Davis 30 5000
Kochhar 5000
DEPARTMENT_ID DEPARTMENT_NAME
10 Sales
20 Marketing
30 Accounts
40 Administration
如果你想获得所有的employees的last_name,department_name,不管他们是否匹配部门表中的部门,那么下面的查询语句正确的是()
 A.SELECT last_name,department_name FROM employees e JOIN departments d ON e.department_id(+) = d.department_id; 
 B.SELECT last_name,department_name FROM employees e RIGHT OUTER JOIN departments d ON e.department_id = d.department_id; 
 C.SELECT last_name,department_name FROM employees e, departments d WHERE e.department_id = d.department_id (+) 
 D.SELECT last_name,department_name FROM employees e LEFT OUTER JOIN departments d ON e.department_id = d.department_id; 
正确答案:CD

现问,为什么选cd,其它选项为什么不行呢,
thanks

------解决方案--------------------
前两个,是传说中的右连接,以右边的表为主,左表配合输出,也就是说最终数据肯定不会多于右边的表数据。
后两个,和上面相反,是搂主想要的需求,呵呵。
------解决方案--------------------
LZ去看下 连接查询
------解决方案--------------------
左连接是以坐标为主 来关联右表 左表的数据肯定会都显示出来 如果右表存在对应数据 就显示 不存在 就是空值
------解决方案--------------------
探讨

c中e.department_id = d.department_id (+)
+是什么意思呢, 用了=,表示哪个是主表呢,哪个是关联表呢,

------解决方案--------------------
+号为从表,即不带+的表为主表,在From关联的两个表的左边,即为左连接,主表不符合条件的资料也会查询出来。