首页 新闻 搜索 专区 学院

求一个SQL语句 oracle里用

0
悬赏园豆:20 [已解决问题] 解决于 2011-02-21 16:51

第一张表为人完成的任务
结构为
personname   finishworkid
张松          10
张松          11
千亮          10
第二个表任务表的结构是
workname   workid
任务1          10
任务2          11
任务3          12

我想找出来第一张表里的人没有完成的任务
结果应该为
persongname   workname
张松           任务3
千亮           任务2
千亮           任务3

求个SQL

aixuexi的主页 aixuexi | 初学一级 | 园豆:15
提问于:2011-02-18 13:29
< >
分享
最佳答案
0

select a1.personname,a3.workName from

(--查询所有人与所有任务的集合

select t1.personname,t2.workid from

(select personname from T人完成的任务 group by personname) t1 ,

(select workid from T任务表 group by T任务表) t2 ) a1 left join

(--查询人完成任务的集合

select t1.personname,t2.workid from T人完成的任务 T1 innerJOIN T任务表 T2

ON T1.finishworkid=T2.WORKID ) a2

on a1.personname=a2.personname and a1.workid=a2.workid 

left join T任务表 a3 on a1.workid=a3.workid

where a2.workid is null

收获园豆:10
深水的猫 | 初学一级 |园豆:110 | 2011-02-19 22:27
其他回答(1)
0

这样是否可以:

用人和任务的全部组合减去完成的任务.

--SQL中用except关键字
--oracle没用过,用minus试试
select distinct personname,workname
from finishwork,work
except
select personname,workname
from finishwork inner join work on finishwork.finishworkid
=work.workid

我刚试了下.是可以的.

 

收获园豆:10
Localhost | 园豆:443 (菜鸟二级) | 2011-02-18 14:17
貌似这个不行
支持(0) 反对(0) aixuexi | 园豆:15 (初学一级) | 2011-02-18 14:24
是不是还有其他条件?
支持(0) 反对(0) Localhost | 园豆:443 (菜鸟二级) | 2011-02-18 14:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册