2017-09-22 9 views
0

メインクエリに2つのテーブルを結合する方法がわかりません。なぜなら、それぞれ異なる状況の3つのメインテーブルにそれぞれ参加するからです。同じテーブルを複数のテーブルに結合する3つの異なる条件。 mysql

私は3つの事項に基づいてアカウントコードを決定しようとしています。以下のメインテーブルを参照してください。 アカウントコードは、3つの異なるテーブルである支払いコード、部門および従業員タイプに基づいています。ここで

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

は、私は、多くの異なる条件に次の2つのテーブルを結合するために必要な、私は

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 

これらのテーブルを結合する方法です。

テーブルは:

----------------------------------------------------------------------- 
| 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  | 
----------------------------------- 

は、内側 accountcodesから選択*私にはありませんa.lkp_accountcodes_id = lac.id

にlkp_accountcodesのLACに参加3つの左結合を実行するか、または一時テーブルを作成する必要があるかどうかを確認します。

答えて

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 JOINの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

関連する問題