从一个表中显示两个名称不同的id

时间:2016-11-28 17:41:14

标签: mysql join

我有两张桌子

tb_masteropsi

id, type, name  
1, Job, Painter  
2, Job, Singer  
3, Use, Kanvas  
4, Use, Guitar  
5, Use, Microphone

tb_employee

id, name, job, use  
1, Jhon, 1, 3  
2, Mark, 2, 4  
3, Tom, 2, 5 

我使用的查询显然不起作用

select
    a.*,
    b.* 
from tb_employee a 
  join tb_masteropsi b 
  on a.job = b.id and a.use = b.id;

我的目标是获得以下结果

id, name, job, use  
1, Jhon, Painter, Kanvas  
2, Mark, Singer, Guitar  
3, Tom, Singer, Microphone  

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您必须两次加入tb_employee表,才能从该表中获取两个不同的行(一次用于'作业'一次用于'使用'列{{1} } table)。

所以你需要这样的东西才能达到预期的效果

tb_employee

注意:请考虑将SELECT te.`id`, te.`name`, tm1.`name` as 'job', tm2.`name` as 'use' FROM `tb_employee` te LEFT JOIN `tb_masteropsi` tm1 ON tm1.`id`=te.`job` LEFT JOIN `tb_masteropsi` tm2 ON tm2.`id`=te.`use` ; 表拆分为两个单独的表 - 一个用于" Job"和#34;使用"。

Navicat测试预览:

enter image description here