TO WATERFIRER:嗯,不好意思,似乎有些问题呢。 是找出那个只有一个PROJECT的人啊,就是在VIEW里面只出现一次面子的人,因为只有一个PROJECT所以只在一个CITY工作。你的语句下来是出现本不应该出现的TUPLE了。
现在只有name和city,跟PROJECT没关系 name city a 1 a 2 b 1 b 1 应该只把b查出来
TO WATERFIRER: 哈哈,我做出来,都是你给我了方向,我只是稍微修改了下。实在感谢啊。PlaceOfWork 是有三个ATTRIBUTE的,NAME,CITY,HOURS 解释下:首先你的语句显示结果是这样的 NAME CITY -------------------- -------------------- CERI, Rose Adelaide CERI, Rose Springton CHEN, Mary Cookfield CHEN, Mary Springton SMITH, Andy Watervale WHITE, John Springton BROWN, Barry Summerton SWAFFER, Jill Watervale JONES, Frances Springton MARSHALL, John Cookfield MARSHALL, John Springton McBRIDE, David Adelaide McBRIDE, David Springton STURT, Michael Summerton PRICE, Patricia Springton15 rows selected.明显出现了不属于要求的数据项。 不过我知道COUNT可以那么用,我就有了一个想法。 select * from PlaceOfWork where name in (select name from PlaceOfWork group by name having count(name)=1) 结果就成为: NAME CITY HOURS -------------------- -------------------- ---------- BROWN, Barry Summerton 16 SMITH, Andy Watervale 16 WHITE, John Springton 32 STURT, Michael Summerton 32 SWAFFER, Jill Watervale 32外面那个括号是列出只有一个PROJECT的员工,后面是列出员工的详细信息。PS.就是不知道按照原来你的方法是不是可以一次性正确列出所有信息,要是可以就不要这么麻烦了。 我只是还是困惑“GROUP”这个FUNCTION在按照多个VALUE进行操作的时候是按照什么原理工作得,如果只是一个VALUE那很好理解也很清晰,可一多结果就会出问题了。
TO 水清: 可REQUIREMENT要求的是只在一个城市工作得!!! 员工一般是到PROJECT所在地工作,至于远程工作应该是不考虑得吧,一个员工肯定是属于一个部门,一个部门肯定只是在一个城市,那就无所谓说一个了,同样,一个员工当然常住在一个CITY不可能常住两个CITY啊,所以说只在一个城市工作应该是说PROJECT所在城市,而且PlaceOfWork是和三个TABLE有关系得db.WorksOn,db.Employee,db.Project,不过无论如何还是感激啊,谢谢大大了~~~~~上次我问了10G ORACLE不能在like语句中用WILDCARD 比如[0-9]这样的东西,半天没人回答我,我那个伤心啊,不过后来在官方网站找到REGEXP_LIKE这个语句来代替,果然好用啊~~~这次真是运气啊,谢谢~~~
select name,city from PlaceOfWork group by name,city having count(name)=1
name city
a 1
a 2
b 1
b 1
应该只把b查出来
解释下:首先你的语句显示结果是这样的
NAME CITY
-------------------- --------------------
CERI, Rose Adelaide
CERI, Rose Springton
CHEN, Mary Cookfield
CHEN, Mary Springton
SMITH, Andy Watervale
WHITE, John Springton
BROWN, Barry Summerton
SWAFFER, Jill Watervale
JONES, Frances Springton
MARSHALL, John Cookfield
MARSHALL, John Springton
McBRIDE, David Adelaide
McBRIDE, David Springton
STURT, Michael Summerton
PRICE, Patricia Springton15 rows selected.明显出现了不属于要求的数据项。 不过我知道COUNT可以那么用,我就有了一个想法。
select * from PlaceOfWork where name in (select name from PlaceOfWork group by name having count(name)=1)
结果就成为:
NAME CITY HOURS
-------------------- -------------------- ----------
BROWN, Barry Summerton 16
SMITH, Andy Watervale 16
WHITE, John Springton 32
STURT, Michael Summerton 32
SWAFFER, Jill Watervale 32外面那个括号是列出只有一个PROJECT的员工,后面是列出员工的详细信息。PS.就是不知道按照原来你的方法是不是可以一次性正确列出所有信息,要是可以就不要这么麻烦了。
我只是还是困惑“GROUP”这个FUNCTION在按照多个VALUE进行操作的时候是按照什么原理工作得,如果只是一个VALUE那很好理解也很清晰,可一多结果就会出问题了。