作者Sunofgod ( )
看板Database
标题Fw: [考题] 101国营/资料库/SQL
时间Sun Oct 20 17:16:53 2013
※ [本文转录自 Examination 看板 #1INwnp3M ]
作者: Sunofgod ( ) 看板: Examination
标题: Re: [考题] 资料库主键问题
时间: Thu Oct 17 17:22:57 2013
: P.S. 定义要看清楚,每个字每个符号都请了解意思...
: 今年高考好像满多人因为定义的关系痛失分数...orz
感谢~後来有弄懂了
想在请教他最後一题连锁题
附上题目
http://ppt.cc/4BJi
第三小题
想得到一个表格
--------------------
EName DName
Bob HR
Joe Mis
Mary
--------------------
两种SQL语法何者正确,若错误请写出查询结果
SQL1 SOL2
Select EName,DName Select EName,DName
From 员工任务,部门 From 员工任务,部门
Where 员工任务.DID=部门.DID Where 员工任务.DID=部门.DID
Or 员工任务.DID is Null Union
Order by EName,DName Select EName,DName
From 员工任务,部门
Where 员工任务.DID is Null
Order by EName,DName
-----------------------------------------------------------------------
SQL1-第一次看到Where里面有Or的...应该是题目做的不够多
但逻辑上可以理解。
SQL2我也认为是这样
第一个查询会得到
EName DName
Bob HR
Joe Mis
Union底下的查询Where那里没有合并条件 会变成员工任务跟部门做卡氏基
然後选择员工任务.DID为Null的後应该会得到
EName DName
Mary HR (来自Mary跟HR合并)
Mary Mis (来自Mary跟Mis合并)
Mary Sale (来自Mary跟Sale合并)
所以合并後是得到
EName DName
Bob HR
Joe Mis
Mary HR
Mary Mis
Mary Sale
不知道这样想对不对
先谢谢各位以及先前热心回答的板友
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.164.93.128
※ 编辑: Sunofgod 来自: 218.164.93.128 (10/17 17:24)
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: Sunofgod (111.254.110.152), 时间: 10/20/2013 17:16:53
1F:→ Sunofgod:转来这边请教版友们 谢谢~ 10/20 17:17
2F:推 sai25:你是对的 但是我看2个语法都是错的 结果都是一样的 10/20 19:46
3F:→ sai25:正确应该是用left join on A.DID = B.DID 就好 不知正解是? 10/20 19:47
4F:→ Sunofgod:这是国考非选 没有正解 可以查到某补习班拟答 但是该补习 10/20 20:37
5F:→ Sunofgod:班连主键答案都错 也不指望了 请教第一个为什麽错呢? 10/20 20:38
6F:→ Sunofgod:不可以用Or吗 10/20 20:38
7F:推 sai25:首先题目下得join有点怪 这种写法是inner join但是加上or.. 10/20 23:46
9F:推 sai25:通常都会用left join如要用inner就会是要找两边都要对应的 10/20 23:52
10F:→ sai25:所以我不太理解他怎麽会用inner配or.. 10/20 23:52
11F:→ Sunofgod:耶...我懂你说的正解 只是他考试就是这样出.... 10/21 00:00
Select EName,DName
From 员工任务 left outer join 部门 on 员工任务.DID=部门.DID
Order by EName,DName
应该这样就可以了吧?!
如果把你的ISNULL(DNAME,'')拿掉应该也对?!
我真的没在书上看过Where里面有Or的 还真的不知道资料会怎麽跑...
没想到竟然也是错的
12F:推 sai25:WHERE当然可以加or 可是不适合这题这样的下法 10/21 00:11
13F:→ sai25:要下or还是用left join这类的写法会比较清楚 10/21 00:13
刚想到..是不是因为执行顺序是From先
因此还是两个表格先做卡氏积
所以在Or条件选择is NULL时才会连那些部门也一起选取了
另外你提供的网址好棒...我一直在找这种网站可以自己跑资料看看
谢谢!!
※ 编辑: Sunofgod 来自: 111.254.110.152 (10/21 00:21)
14F:推 sai25:要看结果 自己安装sql server就好了... 10/21 01:14
15F:→ Sunofgod:我知道~以前有摸过 但现在不想在这台电脑上装有的没的XD 10/21 09:25