在SQL需要帮助加盟
问题描述:
我有如下两个表:在SQL需要帮助加盟
表:员工
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
我需要映射雇员表中的代码ID与代码表中的相应代码名称。请帮帮我。
答
你只需要正确地加入表格。
表数据
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.
查询
使用甲骨文联接语法:
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>
使用ANSI连接语法:
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>
答
您需要join
的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
+0
Oracle在语法上不正确。 'AS'关键字不用于表格别名。 –
+0
哎呀这里有什么错 –
+0
@LalitKumarB谢谢你更新 –
**从来没有**建议*旧式逗号分隔连接*给任何人。始终使用适当的** INNER JOIN **语法 –
@Fireblade嗯,在使用Oracle数据库时,这是一个*惯。无论如何,添加ANSI语法,谢谢。 –
我需要查询mssql服务器。 – curiousboy