比较和连接多个表,但仅显示是否存在关系

时间:2012-07-20 14:03:18

标签: mysql sql database

我有多个列需要比较和加入。

这是我需要用来比较其他人的表格。

MainTable

--Check Number-- --Reimbursement--
-----1000-----------5800.11
-----1001-----------5802.12
-----1002-----------5801.13
-----1003-----------5800.11
-----1004-----------5804.14

我需要比较这样的多个表

ChildTable1

--Check Number --Name----Total Cash---Bonus-
-----1003------John-------5500.11------300
-----1000------Jane-------5502.12------300
-----1002------Joe--------5501.13------300
-----1001------Jay--------5500.11------300
-----1004------Janie------5504.14------300

ChildTable2

--Check Number --Name----Total Cash---Bonus-
-----1013------John-------5500.11------300
-----1010------Jane-------5502.12------300
-----1002------Joe--------5501.13------300
-----1011------Jay--------5500.11------300
-----1014------Janie------5504.14------300

最终结果应该是这样的

--Check Number --Name----Total Cash---Bonus-----Reimbursement--
-----1003------John-------5500.11------300-----------5800.11
-----1000------Jane-------5502.12------300-----------5800.11
-----1002------Joe--------5501.13------300-----------5801.13
-----1001------Jay--------5500.11------300-----------5802.12
-----1004------Janie------5504.14------300-----------5804.14

--Check Number --Name----Total Cash1---Bonus1---------Total Cash2---Bonus2-----Reimbursement--
-----1003--------John-------5500.11------300------------------NULL------NULL-----------5800.11
-----1000--------Jane-------5502.12------300------------------NULL------NULL-----------5800.11
-----1002--------Joe--------5501.13------300------------------NULL------NULL-----------5801.13
-----1001--------Jay--------5500.11------300------------------NULL------NULL-----------5802.12
-----1004--------Janie------5504.14------300------------------NULL------NULL-----------5804.14

所以我需要将所有表与Main表进行比较,并仅连接具有相同支票号的表

1 个答案:

答案 0 :(得分:1)

您可以将它们作为两个单独的查询并将它们联合起来:

select mt.CheckNumber as CheckNumber,
  c1.name as Name,
  c1.TotalCash as TotalCash,
  c1.Bonus as Bonus,
  mt.Reimbursement as Reimbursement
from MainTable mt
  inner join ChildTable1 c1 on c1.CheckNumber = mt.CheckNumber
UNION
select mt.CheckNumber as CheckNumber,
  c2.name as Name,
  c2.TotalCash as TotalCash,
  c2.Bonus as Bonus,
  mt.Reimbursement as Reimbursement
from MainTable mt
  inner join ChildTable2 c2 on c2.CheckNumber = mt.CheckNumber