>

영업, 섬유 및 마케팅에서 일하는 직원의 세부 정보를 검색하려면 Oracle에서 쿼리를 작성해야합니다. 그러나 직원이 마케팅에서 일할 때는 부서 위치가 미국과 EU 인 직원 만 가져와야합니다.

부서 테이블에서 영업 및 섬유의 위치 열이 NULL입니다.

예를 들어

부서 표 :

dept_id   emp_id    dep_name       location 
D_1       A1130    MARKETING         US  
D_2       A1132    SALES             (null)
D_3       A1133    TEXTILES          (null)
D_4       A1134    MARKETING         US 
D_5       A1135    MARKETING         EU

아래 쿼리를 작성했습니다. UNION을 사용하고 코드를 두 번 쓰는 대신 간단하게 작성할 수있는 다른 방법이 있습니까?

도와주세요.

SELECT emp.emp_id,
      emp.first_name ||' '|| emp.last_name employee_name,
      dept.department_name
FROM department dept,             
    employee emp,
    salary sal
WHERE emp.emp_id = dept.emp_id
 and dept.dept_id = sal.dept_id
 and emp.emp_id = 'A1130'
 and dept.department_name in ( 'SALES',
                             'TEXTILES')
UNION
SELECT emp.emp_id,
     emp.first_name ||' '|| emp.last_name employee_name,
     dept.department_name
FROM department dept,             
    employee emp,
    salary sal
WHERE emp.emp_id = dept.emp_id
 and dept.dept_id = sal.dept_id 
 and emp.emp_id = 'A1130'
 and dept.department_name in ( 'MARKETING')
 and dept.locations in ('US','EU');


  • 답변 # 1

    와이즈 비즈

    retrieve the details of employees who work either in Sales, Textiles and Marketing. But when the employees work in Marketing, I need to get only those employees whose department location is US and EU.

    없이 이것을 할 수 있습니다 UNION 와 함께 OR 의 에드 조건  조항 :

    WHERE
    
    

    측면 참고 사항 :항상명시 적 조인 사용 ( SELECT emp.emp_id, emp.first_name ||' '|| emp.last_name employee_name, dept.department_name FROM department dept INNER JOIN employee emp ON emp.emp_id = dept.emp_id INNER JOIN salary sal ON dept.dept_id = sal.dept_id WHERE emp.emp_id = 'A1130' AND dept.department_name in ('SALES', 'TEXTILES') OR (dept.department_name = 'MARKETING' AND dept.locations in ('US','EU')) )  키워드) 구식 대신 암시 적 조인 ( ON 의 테이블 목록 포함)  20 년 이상 전에 호의를 얻지 못한 조항). FROM

  • 이전 multithreading - java - 필요할 때 소켓을 허용하는 스레드를 생성합니까?
  • 다음 PHP에서 텍스트 파일의 행과 열 읽기