2013-03-10 137 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