2015-05-07 29 views
2

我有叫EMPPROJECTSOracle發現者 - 多重聯單表

EMP表數據庫表的業務領域下定義的兩個文件夾具有以下的列

emp_number 
emp_name 

projects表有以下幾列

proj_id 
proj_initiated_by 
proj_started_by 
proj_closed_by 

連接生成爲

emp.emp_number -> projects.proj_initiated_by (one_to_many) 
emp.emp_number -> projects.proj_started_by (one_to_many) 
emp.emp_number -> projects.proj_closed_by (one_to_many) 

在Discoverer桌面,當我試圖創建一個報告,我能看到誰發起(initiated_by)的人 僱員姓名

然而,對於started_by和closed_by,我不知道如何顯示啓動和關閉項目人員的員工姓名。

employee name of person who started (started_by)  
employee name of person who started (closed_by) 

欣賞這個

回答

2

爲了實現以下

emp.emp_number -> projects.proj_initiated_by (one_to_many) 
emp.emp_number -> projects.proj_started_by (one_to_many) 
emp.emp_number -> projects.proj_closed_by (one_to_many) 

是創建表emp的三個對象,並創建加入了

projects.proj_initiated_by = emp1.emp_number 
projects.proj_started_by = emp2.emp_number 
projects.proj_closed_by = emp3.emp_number 
1

任何幫助,您可以使其在2個變種:
加入EMP的每一個人 - 所以3加入
做出一些功能或(選擇EMP其中emp_number = EMP_NAME。 ..)內部選擇性部分

+0

我有三個連接的業務領域,但是在Discoverer桌面,不知道如何使用三個連接來達到預期的效果。使用select查詢是一個選項,因爲我期望在沒有SQL Query的情況下實現它。 – user75ponic

1

我不熟悉特定的報告工具,但您可能正在使用,但我可以說,編寫SQL查詢當然是可以的(或者,引擎寫入e給你......),它包含對同一個表的多個引用(例如, EMP)。

SELECT i.emp_name AS initiated_by_name, 
     s.emp_name AS started_by_name, 
     p.project_d 
    FROM projects p 
    INNER JOIN emp i ON (i.emp_number = p.proj_initiated_by) 
    INNER JOIN emp s ON (s.emp_number = p.proj_started_by) 

請注意我是如何使用別名(i,s,p)來「消除歧義」表emp的兩個不同的和不相關的引用。 (並且對projects表都是JOINed。)我還使用AS爲結果提供了不同的列名。

另外:我選擇在這裏使用INNER JOIN而不是LEFT OUTER JOIN。所以,這個查詢將只返回既有發起者又有發起者的項目。這是一個任意的選擇,也許是一個不恰當的選擇。如果我選擇使用LEFT OUTER JOIN,則會列出每個項目,但是initiated_by_name和/或started_by_name可能是NULL,結果集會更大。

如果該報告的工具做創建你的SQL查詢工作,你會發現(可能是一個小挖成「先進」用戶手冊的部分)之後,它有一些創建像這樣的查詢的手段。 (包括各種類型的JOINs。)

+0

Mike在Discoverer中有一個使用SQL查詢生成報告的選項,可以使用數據庫對象創建業務區域以創建報告。我知道使用SQL查詢來實現所需的結果。但想知道如何使用基於數據庫對象的文件夾來做到這一點。 – user75ponic

+0

這裏我不得不說,「我還沒有使用過Discoverer,所以我不知道。」除非在報表定義中多次包含「文件夾」*(nee:*「數據庫表」),否則這可能是「打破」文件夾的隱喻「的情況。所以,你可能會偶然發現一個你只需要編寫一個SQL查詢的例子。或者,可能會有一些「高級」功能。我只能有意義地描述「實際上必須呈現給SQL服務器的是什麼」,而不是爲了達到目的而必須在本產品中使用的迴轉。祝你好運。 –

+0

PS:您可以確信*此報告產品的設計者*知道*這類要求,因此他們會對此做出某種限制......希望不要只是「投擲 - 在毛巾上,迫使你寫SQL。「例如,在Microsoft Access(和Paradox)中,存在「數據模型」的概念。你正在處理的要求是''先進的''是的,但是真的只有*稍微*所以......「通過手冊的中後期部分介紹。 :-) –