如何在mysql中将3个表合并为一个表?

时间:2019-02-16 07:51:53

标签: php mysql join

我有3张桌子:

1.company_master

  id            com_name        unique_id
   1           stackoverflow      ABCD
   2           google             EFGH

2.internal_employee_master

  id          employee_name        unique_id
   1           Noah                    ABCD
   2           Liam                    ABCD
   3           William                 ABCD
   4           Benjamin                ABCD
   5           Jacob                   EFGH

3.external_employee_master

  id    employee_name     unique_id
   1    Elijah             ABCD
   2    Ethan              ABCD
   3    Alexander          EFGH

我在所有公司和onchange活动中都有一个动态选择框 我希望特定雇员的所有内部和外部雇员都在同一行。 例如

如果用户将从选择框中选择 stackoverflow ,则用户将从internal_employee_masterexternal_employee_master获取所有数据:

  id          employee_name        unique_id
   1           Noah                    ABCD
   2           Liam                    ABCD
   3           William                 ABCD
   4           Benjamin                ABCD
   1           Elijah                  ABCD
   2           Ethan                   ABCD
  

如何创建查询以获取上述数据,然后如何将其插入   一张表中的数据,以标识谁是internal_employee或   external_employee是谁。我总共只有一列unique_id   3张桌子。

2 个答案:

答案 0 :(得分:0)

您可以使用UNION返回两个表的合并结果...

select id, employee_name, unique_id
    from internal_employee_master
    where unique_id = 'ABCD'
union
select id, employee_name, unique_id
    from external_employee_master
    where unique_id = 'ABCD'

尽管您最好将两个表组合在一起,并且仅使用一些标志来指示哪些是内部雇员,哪些是外部雇员。

如果需要确定不同类型的员工,则可以在行中添加标记...

select id, employee_name, unique_id, "Internal" as typeOfEmployee
    from internal_employee_master
    where unique_id = 'ABCD'
union
select id, employee_name, unique_id, "External" as typeOfEmployee
    from external_employee_master
    where unique_id = 'ABCD'

答案 1 :(得分:0)

您可以使用UNION CLAUSE

SELECT employee_name, unique_id FROM internal_employee_master WHERE unique_id = 'ABCD'

UNION

SELECT employee_name, unique_id FROM external_employee_master WHERE unique_id = 'ABCD'

SQL UNION子句/运算符用于合并两个或多个SELECT语句的结果,而不会返回任何重复的行。