2013-03-10 126 views
1

SQL甲骨文,显示输出正确

我坚持一点与输出....

问题: 需要列出组,属于每个组成员。对于每个组,显示唯一标识符及其名称(如果有的话)。对于每个成员,显示其组长的唯一标识符,姓名,性别,出生日期和标识符。在每个组中,按姓氏和名称对成员进行排序。

我的回答:

SELECT 
     P.Name, 
     P.DOB, 
     P.Gender, 
     G.GroupName, 
     GL.PersonId 
FROM Person P 
INNER JOIN GroupMember GM ON GM.PersonId = P.PersonId 
INNER JOIN Group G ON G.GroupId = P.GroupId 
INNER JOIN GroupLeader GL ON GL.GroupId = G.GroupId 

的问题是,如何使用逻辑ERD它在文章顶部显示正确这个问题....

对于我的答案我有一个像这个,但我创建这个表,或者我错过了一些认为((

ORA-00942: table or view does not exist 
+0

给您的ERD唯一有效的表名是人,其余未在您的图表中列出。 – Byron 2013-03-10 20:05:43

+0

你能解释我该如何以正确的方式列出它才能正确显示它? – 2013-03-10 20:08:03

+0

gMember不是一个有效的表名称 - 您的表被称为“GroupMember” - 同样适用于groupTab和gLeader – Byron 2013-03-10 20:08:47

回答

0

此:

INNER JOIN gLeader GL ON GL.group_idG.group_id 

无效。难道不是这个吗?

INNER JOIN gLeader GL ON GL.group_id = G.group_id 

编辑从这里开始

开始与此:

SELECT 

    -- P.Name 
    -- , P.DOB 
    -- , P.Gender 
    -- , G.GroupName 
    -- , GL.PersonId 

count(*) 
FROM Person P 
-- INNER JOIN GroupMember GM ON GM.PersonId = P.PersonId 
-- INNER JOIN Group G ON G.GroupId = P.GroupId 
-- INNER JOIN GroupLeader GL ON GL.GroupId = G.GroupId 
where 1=2 

如果运行成功,按行取消注释的其余from子句线,每次运行它。如果您没有收到任何错误,请从select子句中取出计数(*),并取消注释每个字段,直到出现错误。然后你就会知道问题是什么。

如果第一次出现错误,您可能必须使用数据库名称或任何他们在oracle中调用的名称来限定表名。在我的工作中,我不得不做这两类事情。

from database.tablenam 

from "database"."tablename" 
+0

Yee))对不起,这是版权对错误 – 2013-03-10 20:07:11

+0

你有什么想法如何做这个问题? – 2013-03-10 20:39:38

+0

@Danis,我想你对表名GROUP有问题,不是保留关键字吗? http://docs.oracle.com/cd/B19306_01/server.102/b14200/ap_keywd.htm – ajmalmhd04 2013-03-11 01:54:15