내 기본 쿼리에 두 테이블을 조인하는 방법을 모르겠습니다. accountnumber를 결정하는 두 개의 테이블은 서로 다른 상황에 대해 3 개의 주 테이블 각각에 연결됩니다.MYSQL 하나의 큰 왼쪽 외부 조인 또는 3 개의 왼쪽 외부 조인 같은 테이블?
세 가지를 기반으로 계정 번호를 결정하려고합니다. 계좌 번호는 3 개의 다른 테이블 인 지불 코드, 부서 및 직원 유형을 기반으로합니다.
다음은 어떻게 결합해야하는지입니다.
/* all accountnumbers have a paycode_id*/
accountcodes.paycode_id = employee_pay.id
/* all accountnumbers are assigned to either a certain department or all*/
accountcodes.department_code = department.code
/* the accountnumber can be assigned to one emp_type or both*/
accountcodes.emp_type_id = employee_infos.emp_type_id
/* the accountnumber is in table:lkp_accountcodes, that determines the account number table:accountcodes */
accountcodes.lkp_accountcodes_id = lkp_accountcodes.id
표 : 나는 왼쪽 조인 세 가지 일을해야하는지 내가 임시 테이블을 생성, 모르는
-----------------------------------
| id | company_id | accountnumber |
|-----|------------|----------------|
| 21 | 500 | 5210 |
| 22 | 500 | 6210 |
| 23 | 500 | 2211 |
| 24 | 500 | 2210 |
| 25 | 500 | 5010 |
| 26 | 500 | 6000 |
| 27 | 500 | 5090 |
-----------------------------------
lkp_accountcodes, 또는 하나 개의 큰 왼쪽 외부 :
-----------------------------------------------------------------------
| 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 아래처럼 가입 하시겠습니까? 또한 그룹화하는 방법을 잘 모르겠다. 그리고 departent 코드가 null이면 계좌 번호는 paycode_id와 emp_type_id에 의해 결정되어야한다. 아래 검색어로 도와주세요.
SELECT i.employee, d.department, e1.paycode, a1.accountnumber
FROM employee_pay e1
INNER JOIN employee_infos i ON e1.emp_info_id = i.id
INNER JOIN department d ON i.department_id = d.id
LEFT OUTER JOIN accountcodes ac ON ac.paycode_id = e1.id
AND ac.emp_type_id = i.emp_type_id
AND ac.department_code = d.code -- if null?
LEFT OUTER JOIN lkp_accountcodes lgc on gp.lkp_gl_code_id = lgc.id
-- group?
예상 된 결과
emp_number | emp_type | deptartment | pay_code | account_number
123 | temp | 120 | CPP Ded | 5210
456 | reg | 310 | CPP Ded | 6210
789 | temp | null | ExpReim | 2210
987 | reg | null | ExpReim | 2211
654 | reg | 145 | StatHol | 5010
321 | temp | 145 | StatHol | 5090
333 | temp | 532 | StatHol | 6000
업데이 트 질문을 사용하고 expetced 결과를 추가해야 대신
GROUP BY
의 중복 행을 피하려는 경우 다음 기능을 응집하지 않은 사실을 수행 – scaisEdge@scaisEdge는 –