2016-01-11 5 views
0

У меня есть запрос, как этотусловия SQL запросов с WHERE и AND

SELECT EDR.DEPT_ID    AS DEPT_ID, 
    EMP.EMPLOYEE_ID    AS EMPLOYEE_ID, 
    ELD.LOAN_ID     AS LOAN_ID, 
    ELD.LOAN_STATUS      AS LOAN_STATUS 
FROM EMP_DEPT_REL EDR 
INNER JOIN EMPLOYEE_MANUAL EMP 
ON EDR.EMPLOYEE_ID = EMP.EMPLOYEE_ID 
LEFT OUTER JOIN EMPLOYEE_LOAN_DETAIL ELD 
ON ELD.LOAN_ID = EMP.LOAN_ID 
AND ELD.DISPLAY_FLAG  = 'Y' 
WHERE EDR.DEPT_ID IN ('123'); 
  1. Employee_Manual является таблица, в которой мы будем иметь детали сотрудника, который вручную введенные приложением.
  2. Emp_dept_rel - это отношения между сотрудником и отделом.
  3. Employee_loan_detail будет содержать информацию о кредите всех сотрудников организации.

Я хотел бы получить данные от всех сотрудников, которые связаны в отделе, которые я передаю в качестве ввода.

Что мне нужно,

  • Получить все сотрудники, которые в employee_manual таблице.
  • Если - это записи в Employee_loan_details, то я должен получить информацию о кредите , только если флаг установлен как «Y» в Employee_loan_details.
  • Мы должны показать сотрудникам, даже если нет никаких деталей в Employee_loan_details

Необходимо получить данные сотрудников, у которых есть кредиты в определенном отделе. Если у Employee есть внешний кредит, нам нужно показать детали займа. (DISPLAY_FLAG = 'Y') Если это внутренний кредит, предоставленный организацией, он будет в Employee_loan_detail и будет помечен как DISPLAY_FLAG = "N"

EMPLOYEE_LOAN_DETAIL 
<table> 
<tr><th>EMPLOYEE_ID</th><th>LOAD_ID</th><th>DISPLAY_FLAG</th><tr> 
<tr><td>123</td><td>50</td><td>Y</td></tr> 
<tr><td>456</td><td>51</td><td>N</td></tr> 
<table> 

emp_dept_rel 
<table> 
<tr><th>EMP_ID</th><th>DEPT_ID</th><tr> 
<tr><td>123</td><td>987</td></tr> 
<tr><td>456</td><td>987</td></tr> 
<tr><td>789</td><td>987</td></tr> 
<table> 

employee_manual 
<table> 
<tr><th>EMPLOYEE_ID</th><th>LOAD_ID</th><th>DEPT_ID</th><tr> 
<tr><td>123</td><td>50</td><td>987</td></tr> 
<tr><td>456</td><td>51</td><td>987</td></tr> 
<tr><td>789</td><td></td><td>987</td></tr> 
<table> 
+1

И ваш вопрос ....? – Tatiana

+0

Просьба показать: определения схемы таблицы, примеры данных таблицы и ожидаемый результат. – OldProgrammer

+0

@Tatiana, я упомянул вопросы как условия. Пожалуйста, бросьте на него свет – Venkat

ответ

0

Попробуйте это:

SELECT 
    EDR.DEPT_ID    AS DEPT_ID, 
    EMP.EMPLOYEE_ID   AS EMPLOYEE_ID, 
    ELD.LOAN_ID    AS LOAN_ID, 
    ELD.LOAN_STATUS   AS LOAN_STATUS 

FROM  EMPLOYEE_MANUAL EMP 

INNER JOIN EMP_DEPT_REL EDR 
      ON EDR.EMPLOYEE_ID = EMP.EMPLOYEE_ID 

LEFT OUTER JOIN EMPLOYEE_LOAN_DETAIL ELD 
      ON ELD.LOAN_ID = EMP.LOAN_ID 

WHERE EDR.DEPT_ID IN ('123') AND ELD.DISPLAY_FLAG  = 'Y'; 
+0

@Venkat, пожалуйста, расскажите, с какими проблемами вы сталкиваетесь. Я имею в виду, какие записи не отображаются. –