我试图在一个表的行上获得不同的值,我无法想到如何做到这一点。
让我们举例说:
table1
id | name | empCode | insCode
1 John | E101 | I101
table2
id | code | name | role
1 | E101 | Mich | 2
2 | I101 | Bran | 3
table1具有table2的reference id
,而table1中的empCode
和insCode
依赖于table2中的code
和role
。
我想要的是这样的:
id | code | name | empCode | insCode | role |
1 | ? | John | E101 | I101 | ? |
老实说,我不知道是否可以在一个select
查询中检索同一个表中的多个行。
如果不是,我可以采用哪些其他可能的解决方案?
答案 0 :(得分:1)
尝试以下方法: 选择a。*,b.role FROM table1 a.id = b.id
上的内连接table2 b此外,您可能需要考虑从表2中删除empcode和inscode,因为它在表1中是多余的,反之亦然,具体取决于您的目标。
答案 1 :(得分:1)
您的表格设计存在问题,但您可以通过以下查询获得预期效果:
select
result1.id,
result1.code,
result1.name,
result1.empCode,
result1.insCode,
result1.role as role_of_empCode,
result2.role as role_of_insCode
from (
SELECT tbl1.id,
tbl2.code,
tbl1.name,
tbl1.empCode,
tbl1.insCode,
tbl2.role
FROM `table2` tbl2
INNER JOIN `table1` tbl1
on tbl2.code = tbl1.empCode
) as result1,
`table2` result2
where result1.insCode = result2.code
ORDER BY result1.id;