我有两张桌子
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
我该如何解决?
答案 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测试预览: