2017-09-22 8 views
0

서로 다른 상황에 대해 각각 3 개의 주 테이블에 각각 가입하기 때문에 두 개의 테이블을 기본 쿼리에 조인하는 방법을 잘 모르겠습니다.동일한 테이블을 여러 테이블에 조인합니다. 세 가지 조건이 있습니다. mysql

나는 세 가지를 기반으로 계정 코드를 결정하려고합니다. 아래 주요 표를 참조하십시오. 계정 코드는 세 개의 다른 테이블 인 지불 코드, 부서 및 직원 유형을 기반으로합니다. 내가

SELECT i.id, i.emp_type_id, m.code as deptartment 
FROM employee_pay e1 
INNER JOIN employee_infos i ON e1.employee_infos_id = i.id 
INNER JOIN department m ON i.co_cost_center_matrix_id = m.id 

내가 여러 가지 조건에 다음 두 테이블을 조인 할 필요가 이러한 테이블을 조인 방법은 다음과

accountcodes.paycode_id = employee_pay.paycode_id 
accountcodes.department_code = department.code 
accountcodes.emp_type_id = employee_infos.emp_type_id 

이다.

표 :

----------------------------------------------------------------------- 
| ID | lkp_accountcodes_id | paycode_id | department_code | emp_type_id | 
|--------------------------|------------|-----------------|-------------| 
| 1 |   21  |  15 |   120  |  1  | 
|--------------------------|------------|-----------------|-------------| 
| 2 |   22  |  15 |   310  |  1  | 
|--------------------------|------------|-----------------|-------------| 
| 3 |   23  |  30 |   null |  1  | 
|--------------------------|------------|-----------------|-------------| 
| 4 |   24  |  30 |   null |  2  | 
|--------------------------|------------|-----------------|-------------| 
| 5 |   25  |  55 |   120  |  1  | 
|--------------------------|------------|-----------------|-------------| 
| 6 |   26  |  55 |   310  |  2  | 
|--------------------------|------------|-----------------|-------------| 
| 7 |   27  |  55 |   120  |  2  | 
----------------------------------------------------------------------- 

테이블 accountcodes : lkp_accountcodes를

----------------------------------- 
| id | company_id | accountcode | 
|-----|------------|----------------| 
| 21 | 500  |  5210  | 
|-----|------------|----------------| 
| 22 | 500  |  6210  | 
|-----|------------|----------------| 
| 23 | 500  |  2211  | 
|-----|------------|----------------| 
| 24 | 500  |  2210  | 
|-----|------------|----------------| 
| 25 | 500  |  5010  | 
|-----|------------|----------------| 
| 26 | 500  |  6000  | 
|-----|------------|----------------| 
| 27 | 500  |  5090  | 
----------------------------------- 

선택 *는 내부가 a.lkp_accountcodes_id = lac.id

에 lkp_accountcodes의 락 가입 accountcodes 난 몰라에서 세 개의 왼쪽 조인을 수행해야하는지 아니면 임시 테이블을 작성해야하는지 알고 있습니까?

답변

0

나는 이것이 옳 의심하지만 당신은

SELECT i.id, i.emp_type_id, m.code as deptartment 
    FROM employee_pay e1 
    INNER JOIN employee_infos i ON e1.employee_infos_id = i.id 
    INNER JOIN department m ON i.co_cost_center_matrix_id = m.id 
    /* paycode */ 
    LEFT OUTER JOIN accountcodes a1 ON a1.paycode_id = e1.paycode_id 
    LEFT OUTER JOIN lkp_accountcodes ac1 on a1.lkp_accountcodes_id = ac1.id 
    /* department */ 
    LEFT OUTER JOIN accountcodes a2 ON a2.department_code = m.code 
    LEFT OUTER JOIN lkp_accountcodes ac2 on a2.lkp_accountcodes_id = ac2.id 
    /* employee type */ 
    LEFT OUTER JOIN accountcodes a3 ON a3.emp_type_id = i.emp_type_id 
    LEFT OUTER JOIN lkp_accountcodes ac3 on a3.lkp_accountcodes_id = ac3.id 

확실하지하려고 않았다 어떻게 그룹이 생각을 할 것이다.

+0

무엇 에 대한 LEFT OUTER 가입 accountcodes A1 ON a1.co_payroll_code_id = hd.co_payroll_code_id 및 a1.lkp_emp_type_id = i.lkp_emp_type_id 및 a1.co_cost_center_id = cc1.code – nick