Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 一个表上的内部联接但参数不同_Mysql - Fatal编程技术网

Mysql 一个表上的内部联接但参数不同

Mysql 一个表上的内部联接但参数不同,mysql,Mysql,我试图在一个表的行上获得不同的值,但我想不出如何实现这一点 比如说: table1 id | name | empCode | insCode 1 John | E101 | I101 table2 id | code | name | role 1 | E101 | Mich | 2 2 | I101 | Bran | 3 表1具有表2的参考id,表1中的empCode和insCode依赖于表2中的code和ro

我试图在一个表的行上获得不同的值,但我想不出如何实现这一点

比如说:

table1
id  |  name  |  empCode | insCode 
 1    John   |   E101   |   I101


table2
id  |  code    | name | role
 1  |   E101   | Mich |   2
 2  |   I101   | Bran |   3
表1具有表2的
参考id
,表1中的
empCode
insCode
依赖于表2中的
code
role

我想要的是这样的:

id | code  |  name  | empCode | insCode | role | 
 1 |  ?    |  John  |  E101   |  I101   |  ?   |
老实说,我不知道是否可以在一个
select
query中检索同一个表中的多行。 如果不是,我还可以选择哪些其他可行的解决方案?

尝试以下方法: 从中选择一个*,b.角色 表1 a内部联接表2 a.id=b.id上的b

也可以考虑从表2中移除代码和代码,因为它在表1中是冗余的,反之亦然,这取决于您的目标是什么。 从中选择一个*,b.角色 表1 a内部联接表2 a.id=b.id上的b


您也可以考虑从表2中移除代码和代码,因为它在表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;

!

您的表设计存在问题,但您可以通过以下查询获得预期结果:

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;

!

我知道一些
内部连接
,但问题是我的
设计,所以它无法按我想要的方式工作。所以,在这种情况下,我所做的是创建另一个查询来检索另一个
,它工作了,但现在,它变成了两个查询,而不是一个查询。我想事情就是这样。不管怎样,谢谢你的回复。我知道一些
内部连接
,但问题是我的
设计,所以它无法按我想要的方式工作。所以,在这种情况下,我所做的是创建另一个查询来检索另一个
,它工作了,但现在,它变成了两个查询,而不是一个查询。我想事情就是这样。谢谢你的回复。谢谢你的回复。在检查你提供的链接,这似乎是确切的可能的答案,我正在寻找。标记为回答的。非常感谢你的帮助和时间。谢谢,谢谢你的回答。在检查你提供的链接,这似乎是确切的可能的答案,我正在寻找。标记为回答的。非常感谢你的帮助和时间。非常感谢。