【问题标题】:Join same tables to multiple tables, three different conditions. mysql将相同的表连接到多个表,三个不同的条件。 mysql
【发布时间】:2018-03-04 09:57:26
【问题描述】:

我不确定如何将两个表连接到我的主查询中,因为它们在不同情况下分别连接到 3 个主表中的每一个。

我正在尝试根据三件事确定帐户代码。见下表。 帐户代码基于工资代码、部门和员工类型,它们是三个不同的表。

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

这是我加入这些表格的方法

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

表: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 lac on a.lkp_accountcodes_id = lac.id

我不知道我是应该做三个左连接还是创建临时表?

【问题讨论】:

    标签: mysql join mapping left-join temp-tables


    【解决方案1】:

    我怀疑这是对的,但你试过了吗

      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
    

    不知道你会如何分组。

    【讨论】:

    • 关于 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 怎么样
    猜你喜欢
    • 2017-03-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多