根据表的列连接表

时间:2013-05-25 06:43:17

标签: mysql sql join left-join

我有一张存储重要日期的表格。

enter image description here

importantDateType列可以是1或2.鉴于这是前端的下拉列表。

  • 1 =>选举司
  • 2 =>村

我有两个表格来存放选民部门和村庄细节。我所做的是importantDateParent中的存储是选民部门或村庄的ID。

我的问题是,如果特定记录的importantDateType为1,重要日期表应与选民分区表一起加入并获得选民分部的名称。如果特定记录的importantDateType为2,则重要日期表应与Village表一起加入并获取该村的名称。

我现在正在使用的是

SELECT `tbl_importantdates`.*,
       `tbl_elecdivision`.`elecDivName`,
       `tbl_villages`.`villageName`
FROM (`tbl_importantdates`)
LEFT JOIN `tbl_elecdivision` ON `tbl_importantdates`.`importantDateParent` = `tbl_elecdivision`.`elecDivID`
LEFT JOIN `tbl_villages` ON `tbl_importantdates`.`importantDateParent` = `tbl_villages`.`villageID`
WHERE `tbl_importantdates`.`status` = '1'

我不希望有两列,例如tbl_elecdivisionelecDivNametbl_villagesvillageName。如何将名为importantDateTypeName的列包含选民部门或村庄的名称,具体取决于importantDateType是1还是2?

1 个答案:

答案 0 :(得分:1)

你是否尝试使用案例......当你的选择条款

时......

你应该这样:

select `tbl_importantdates`.*,
case when importantdatetype = 1 then tbl_elecdivision.elecDivName,
case when importantdatetype = 2 then tbl_villages. villageName
else 'nothing' end name
--.......rest of code your comes here