2017-09-22 37 views
0

我需要創建一個查詢,顯示「合法實體」,「應用程序名稱」,「關閉日期」和「期間」我正在使用Oracle R11,現在我已經找到的查詢在一個表中加入4個表(Oracle R11)

‘法人’

SELECT name 
FROM hr_organization_information HOI 
INNER JOIN hr_all_organization_units HAOU 
ON HOI.ORGANIZATION_ID = Haou.Organization_Id 
WHERE HOI.org_information_context LIKE 'Legal Entity Accounting' 
ORDER BY NAME ASC; 

和‘應用程序名稱,關閉日期,時段’

SELECT A.APPLICATION_ID, 
     B.APPLICATION_NAME, 
     TO_CHAR(A.END_DATE,'HH24:MI DD-MON-YYYYI'), 
     A.PERIOD_NUM 
FROM GL_PERIOD_STATUSES A 
INNER JOIN FND_APPLICATION_TL B ON A.APPLICATION_ID = B.APPLICATION_ID 
WHERE A.Application_Id=101 
    AND LANGUAGE='US' 
    OR A.APPLICATION_ID=200 
    AND LANGUAGE='US' 
    OR A.APPLICATION_ID=222 
    AND LANGUAGE='US'; 

分開,但我還沒有找到加盟的方式他們在一個查詢中,你能幫助我嗎?

+0

您需要確定這些表是以PK/FK方式還是通過其他表關聯。您可以隨時「交叉連接」結果,以便每個法人實體名稱都與第二個查詢中的所有記錄相關聯;但我懷疑這就是你所追求的。由於一個查詢中的表不匹配另一個;我們無法弄清楚如何讓他們聯繫起來。也許人力資源機構以某種方式與FND應用程序綁定?或者它與GL期限有關?沒有這些細節真的幫不上忙。 'organization_ID'和'Application_ID'是否存在於同一個表中? – xQbert

+0

我會用它來檢查,如果在同一個表中存在兩列'SELECT TABLE_NAME FROM ALL_TAB_COLS WHERE COLUMN_NAME在( '的organization_ID', 'APPLICATION_ID') GROUP BY TABLE_NAME HAVING計數(不同COLUMN_NAME)> 1'然後我如果有的話,評估結果以確定哪些結果;最適合需要。如果沒有這些工作,那麼你沒有直接的關係,你必須看看ERD或依賴關係,看看你是否能找到一種方法來看看它們是如何相關的。或詢問系統架構師/參考現有源代碼(ALL_SOURCE),看看您是否可以找到一種方法。 – xQbert

+0

只是猜測,但像xQbert一樣,我會懷疑應用程序(在FND_APPLICATION_TL表中)是由組織單位(來自HR_ALL_ORGANIZATION_UNITS)提交的。無論是那個,還是一個申請由一個單位工作的個人提交 - 在這種情況下,您需要通過一個FIFTH表(可能是EMPLOYEES)將所有內容聯繫起來。現在,順便說一句:第二個查詢中的WHERE子句可以簡化爲「where(101,200,222)和language ='US')中的a.application_id」(您應該可以用其表格限定語​​言)別名)。 – mathguy

回答

0

安東尼奧,我認爲布萊恩給了你很好的建議。如果他的建議沒有引導你回答問題,那麼發佈到EBS論壇(或者其他任何應用程序)也可能是值得的。我會提供,有時加入table_A和table_B的方式是通過table_C。也就是說,如果在一個查詢中找不到與另一個表中的一個表中的任何直接相關的數據,則查看在這些表上定義的FK並指向這些表,以查看您是否可以找到當前不是部分的表任何涉及這些集合的查詢。你弄清楚如何將你當前的每個查詢都加入到它中,這就是你如何將這兩個查詢結合在一起。

0

謝謝大家!

,所有你給我的建議是有用的,我發現有兩列,讓我加入表A與表B表HR_LEGAL_ENTITIES(表三),最終的查詢是:

SELECT HAOU.NAME, 
     FAT.APPLICATION_NAME, 
     TO_CHAR(GPS.END_DATE,'HH24:MI DD-MON-YYYY'), 
     GPS.PERIOD_NUM 
FROM HR_ALL_ORGANIZATION_UNITS HAOU 
INNER JOIN HR_LEGAL_ENTITIES HLE 
ON HLE.ORGANIZATION_ID = HAOU.ORGANIZATION_ID 
INNER JOIN GL_PERIOD_STATUSES GPS 
ON HLE.SET_OF_BOOKS_ID = GPS.SET_OF_BOOKS_ID 
INNER JOIN FND_APPLICATION_TL FAT 
ON GPS.APPLICATION_ID = FAT.APPLICATION_ID 
WHERE GPS.Application_Id IN (101,200,222) AND LANGUAGE='US' 
ORDER BY NAME ASC; 

Regards!