需要SQL连接方面的帮助吗
我有两个表格如下: 表:员工需要SQL连接方面的帮助吗,sql,oracle,join,oracle11g,inner-join,Sql,Oracle,Join,Oracle11g,Inner Join,我有两个表格如下: 表:员工 employeeid code_one code_two 101 17112 17112 102 17113 17112 103 17114 17112 104 17115 16800 106 17116 17112 107 17117 18000 108 171
employeeid code_one code_two
101 17112 17112
102 17113 17112
103 17114 17112
104 17115 16800
106 17116 17112
107 17117 18000
108 17118 17112
表:代码
codeid codename
17112 200TS
17113 400TS
17114 100TS
17115 500TS
17116 620TS
17117 899TS
17118 900TS
16800 888TS
18000 912TS
我需要这样的输出:
输出
employeeid code_one code_two
101 200TS 200TS
102 400TS 200TS
103 100TS 200TS
104 500TS 888TS
106 620TS 200TS
107 899TS 912TS
108 900TS 200TS
我需要将employee表中的代码id与代码表中相应的代码名进行映射。请帮帮我 您需要两次
加入code
表
SELECT E.employeeid,
C.codename AS code_one,
C1.codename AS code_two
FROM Employee E
INNER JOIN Code C
ON E.code_one = c.code
INNER JOIN Code c1
ON E.code_two = c.code
您只需要正确地连接表
表格数据
SQL> SELECT * FROM employee;
EMPLOYEEID CODE_ONE CODE_TWO
---------- ---------- ----------
101 17112 17112
102 17113 17112
103 17114 17112
104 17115 16800
106 17116 17112
107 17117 18000
108 17118 17112
7 rows selected.
SQL> SELECT * FROM code;
CODEID CODENAME
---------- --------
17112 200TS
17113 400TS
17114 100TS
17115 500TS
17116 620TS
17117 899TS
17118 900TS
16800 888TS
18000 912TS
9 rows selected.
查询
使用Oracle连接语法:
SQL> column code_one format a8
SQL> column code_two format a8
SQL> SELECT E.employeeid,
2 C1.codename AS code_one,
3 C2.codename AS code_two
4 FROM Employee e,
5 code c1,
6 code c2
7 WHERE E.code_one = c1.codeid
8 AND E.code_two = c2.codeid
9 /
EMPLOYEEID CODE_ONE CODE_TWO
---------- -------- --------
108 900TS 200TS
106 620TS 200TS
103 100TS 200TS
102 400TS 200TS
101 200TS 200TS
104 500TS 888TS
107 899TS 912TS
7 rows selected.
SQL>
SQL> SELECT E.employeeid,
2 C1.codename AS code_one,
3 C2.codename AS code_two
4 FROM Employee e
5 INNER JOIN code c1
6 ON E.code_one = c1.codeid
7 INNER JOIN code c2
8 ON E.code_two = c2.codeid
9 /
EMPLOYEEID CODE_ONE CODE_TWO
---------- -------- --------
108 900TS 200TS
106 620TS 200TS
103 100TS 200TS
102 400TS 200TS
101 200TS 200TS
104 500TS 888TS
107 899TS 912TS
7 rows selected.
SQL>
使用ANSI连接语法:
SQL> column code_one format a8
SQL> column code_two format a8
SQL> SELECT E.employeeid,
2 C1.codename AS code_one,
3 C2.codename AS code_two
4 FROM Employee e,
5 code c1,
6 code c2
7 WHERE E.code_one = c1.codeid
8 AND E.code_two = c2.codeid
9 /
EMPLOYEEID CODE_ONE CODE_TWO
---------- -------- --------
108 900TS 200TS
106 620TS 200TS
103 100TS 200TS
102 400TS 200TS
101 200TS 200TS
104 500TS 888TS
107 899TS 912TS
7 rows selected.
SQL>
SQL> SELECT E.employeeid,
2 C1.codename AS code_one,
3 C2.codename AS code_two
4 FROM Employee e
5 INNER JOIN code c1
6 ON E.code_one = c1.codeid
7 INNER JOIN code c2
8 ON E.code_two = c2.codeid
9 /
EMPLOYEEID CODE_ONE CODE_TWO
---------- -------- --------
108 900TS 200TS
106 620TS 200TS
103 100TS 200TS
102 400TS 200TS
101 200TS 200TS
104 500TS 888TS
107 899TS 912TS
7 rows selected.
SQL>
不要向任何人推荐老式逗号分隔的连接。始终使用正确的内部连接syntax@Fireblade这是使用Oracle数据库时的一个老习惯。不管怎样,添加了ANSI语法,谢谢。我需要一个mssql服务器的查询。@curiousboy那么为什么要标记oracle
?顺便说一句,NASI语法也应该适用于SQLServer
。你试过了吗?@downvoter我可以知道你为什么不投票吗?这个解决方案正是OP想要的。在Oracle中,它在语法上是不正确的AS
关键字不用于表别名。