2015-07-13 49 views
3

我有如下兩個表:在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與代碼表中的相應代碼名稱。請幫幫我。

回答

-1

你只需要正確地加入表格。

表數據

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> 
+3

**從來沒有**建議*舊式逗號分隔連接*給任何人。始終使用適當的** INNER JOIN **語法 –

+0

@Fireblade嗯,在使用Oracle數據庫時,這是一個老習慣。無論如何,添加ANSI語法,謝謝。 –

+0

我需要查詢mssql服務器。 – curiousboy

3

您需要joincode表兩次。

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謝謝你更新 –