2017-09-22 6 views
0

"Legal Entity", "Application Name", "Close Date"및 "Period"를 표시하는 쿼리를 작성해야합니다. Oracle R11로 작업하고 있습니다.하나의 테이블에 JOIN (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 방식과 관련이 있는지 또는 다른 테이블을 통해 관련되는지 결정해야합니다. 결과를 항상 "교차 가입"할 수 있으므로 각 법인 엔티티 이름이 두 번째 쿼리의 모든 레코드와 연관됩니다. 그러나 나는 그것이 당신이 쫓고있는 것이 무엇인지 의심 스럽습니다. 한 쿼리의 테이블이 다른 테이블과 일치하지 않으므로; 우리는 그들을 어떻게 연관시키는지를 알 수 없습니다. 어쩌면 HR 조직이 FND 응용 프로그램에 어떻게 든 연관 될 수 있습니까? GL 기간과 관련이 있습니까? 이러한 세부 정보가 없으면 실제로 도움이되지 않습니다. 'organization_ID'와'Application_ID'는 같은 테이블에 어딘가에 함께 존재합니까? 모두 열은 같은 테이블에 존재하는 경우 – xQbert

+0

내가 확인하려면이를 사용하는 것'ALL_TAB_COLS FROM TABLE_NAME 을 선택 WHERE 다음 ('ORGANIZATION_ID', 'APPLICATION_ID') TABLE_NAME HAVING COUNT (고유 COLUMN_NAME) BY GROUP> 1'에서 COLUMN_NAME 전 그 결과를 결정하기 위해 결과를 평가한다. 필요에 가장 잘 어울립니다. 그 중 어느 것도 작동하지 않는다면 직접적인 관계가 없으므로 ERD 또는 종속성을 살펴보고 관계가되는 방식을 찾을 수 있는지 확인해야합니다. 또는 시스템 설계자/기존 소스 코드 (ALL_SOURCE)를 참조하여 방법을 찾을 수 있는지 확인하십시오. – xQbert

+0

그냥 추측하지만 xQbert처럼 조직 단위 (HR_ALL_ORGANIZATION_UNITS)에서 응용 프로그램 (FND_APPLICATION_TL 테이블에 있음)을 제출했다고 의심됩니다. 그 중 하나 또는 단위로 일하는 개인이 신청서를 제출합니다.이 경우 모든 사람을 5 인 테이블 (EMPLOYEES)을 통해 관련시켜야합니다. 이제, 두 번째 쿼리의 WHERE 절이'a.application_id in (101, 200, 222) 및 language = 'US')'로 단순화 될 수 있습니다. (그리고 아마도'language'를 테이블로 정규화해야합니다 별명). – mathguy

답변

0

안토니오, 브라이언이 당신에게 건전한 조언을 해준 것으로 생각합니다. 그의 조언이 당신을 대답으로 인도하지 않는다면 EBS 포럼 (또는 이것이 어떤 응용 프로그램이든)에 게시하는 것도 가치가 있습니다. 나는 table_A와 table_B를 조인하는 방법이 table_C를 통해서라고 때때로 제안 할 것이다. 즉, 다른 세트의 테이블 중 하나의 쿼리에서 직접 관련된 데이터를 찾지 못하면이 테이블에 정의 된 FK를보고 현재 파트가 아닌 테이블을 찾을 수 있는지 확인하십시오 집합과 관련된 쿼리 중 하나입니다. 현재 쿼리 각각에 어떻게 참여하는지 파악하면 두 쿼리를 함께 결합하는 방법입니다.

0

감사합니다. 여러분 모두가 나에게 준

충고 유용, 내가 나에게 표 B와 표 A에 가입 할 수 있도록 두 개의 열이있는 테이블 HR_LEGAL_ENTITIES (표 C)를 발견했습니다 된 최종 쿼리는

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!