如何基于值加入不同的表

时间:2015-03-26 15:05:29

标签: mysql join

我有4个表...父表是d_checkupinfo我想基于checkupinfo.move_type列值加入(检查)或(手术)或(medicaleq)...如果值= 1则加入使用检查表,如果值= 2,则加入手术,如果值= 3,则加入medicaleq。 那怎么做呢

SELECT
  d_checkupinfo.*,
  d_branch.*,
  d_checkup.* ,
  d_surgery.* ,
  d_medicaleq.* ,
  d_patient.*
FROM d_checkupinfo
  LEFT JOIN d_branch WHERE d_checkupinfo.chi_branch_id = d_branch.branch_id
  LEFT JOIN d_patient WHERE d_checkupinfo.chi_pi_num = d_patient.pi_id
  LEFT JOIN d_checkup WHERE d_checkupinfo.chi_type_id = d_checkup.checkup_id AND move_type = 1
  LEFT JOIN d_surgery WHERE d_checkupinfo.chi_type_id = d_surgery.surgery_id AND move_type = 2
  LEFT JOIN d_medicaleq WHERE d_checkupinfo.chi_type_id = d_medicaleq.medicaleq_id AND move_type = 3

1 个答案:

答案 0 :(得分:0)

SELECT
  d_checkupinfo.*,
  d_branch.*,
  d_checkup.* ,
  d_patient.*
FROM d_checkupinfo
  LEFT JOIN d_branch ON d_checkupinfo.chi_branch_id = d_branch.branch_id 
  LEFT JOIN d_patient ON d_checkupinfo.chi_pi_num = d_patient.pi_id 
  LEFT JOIN d_checkup ON d_checkupinfo.chi_type_id = d_checkup.checkup_id WHERE move_type = 1
UNION ALL
SELECT
  d_checkupinfo.*,
  d_branch.*,
  d_surgery.* ,
  d_patient.*
FROM d_checkupinfo
  LEFT JOIN d_branch ON d_checkupinfo.chi_branch_id = d_branch.branch_id
  LEFT JOIN d_patient ON d_checkupinfo.chi_pi_num = d_patient.pi_id
  LEFT JOIN d_surgery on d_checkupinfo.chi_type_id = d_surgery.surgery_id WHERE move_type = 2
UNION ALL
SELECT
  d_checkupinfo.*,
  d_branch.*,
  d_medicaleq.* ,
  d_patient.*
FROM d_checkupinfo
  LEFT JOIN d_branch ON d_checkupinfo.chi_branch_id = d_branch.branch_id
  LEFT JOIN d_patient ON d_checkupinfo.chi_pi_num = d_patient.pi_id
  LEFT JOIN d_medicaleq on d_checkupinfo.chi_type_id = d_medicaleq.medicaleq_id WHERE move_type = 3