2016-09-06 166 views
-1

查詢:更新值從一個表到另一

select * from emp; 

輸出:

ID NAME      AGE  SALARY ADDRESS 
------ -------------------- ---------- ---------- -------------------- 
101 Naveen      28  25000 charminar 
102 Vishal      32  28000 kothapet 
180 Manish      25  18000 Begumpet 
120 Sravan      29  20000 Vidyanagar 
106 Mukesh      26  21000 Vanastalipuram 
115 Sankar      23  15000 Kairtabad 
130 Asif       24  16000 Sultan nagar 
142 Deeraj      27  21500 Lalbazar 

查詢:

select * from dept; 

輸出:

JOB_ID JOB_TITLE   HIRE_DATE  EMP_ID 
------ -------------------- --------- ---------- 
12254 Software Testing  16-APR-14 
13696 Developer   25-MAR-13 
13589 Manager    21-JUN-10 
13696 developer   26-DEC-13 
15395 DBA     15-APR-12 
12254 Software testing  14-NOV-14 
13696 Developer   17-FEB-11 
15395 DBA     23-JAN-13 

我必須將表EMP中的所有(ID)值複製到表DEPTEMP_ID)中。

+0

你會怎麼做?關係是什麼? – sagi

+2

這似乎是一個非常奇怪的,可能完全錯誤的設計 - 你設置它的方式(在'DEPT'中表'EMP_ID'爲FK)意味着:每個部門最多可以有** ** ONE * **員工! .....這兩張桌子怎麼連接?不知何故,你必須知道哪個員工屬於哪個部門...(這是它應該的方式) - 'EMP'表應該有'DEPT_ID'外鍵,這樣每個員工都可以屬於一個部門.... ) –

+0

對於你的設計,最好的方法是坐一個一個的地圖ID,因爲你不能以任何方式加入這兩張桌子。 – XING

回答

0

emp和dept表之間沒有關係。所以沒有辦法自動填充EMP_ID列。你應該一個接一個地做。

另一個提示是關於你的設計。您可以使用以下設計來存儲員工和部門數據。

New design for storing department and employees

0

像其他評論者提到的,你必須手動建立鏈接的每個EMP_ID:

UPDATE dept SET EMP_ID = 101 WHERE JOB_ID = 12254 AND HIRE_DATE = TO_DATE('16-APR-14', 'DD-MON-YY'); 
UPDATE dept SET EMP_ID = 102 WHERE JOB_ID = 13696 AND HIRE_DATE = TO_DATE('25-MAR-13', 'DD-MON-YY'); 
UPDATE dept SET EMP_ID = 180 WHERE JOB_ID = 13589 AND HIRE_DATE = TO_DATE('21-JUN-10', 'DD-MON-YY'); 
UPDATE dept SET EMP_ID = 120 WHERE JOB_ID = 13696 AND HIRE_DATE = TO_DATE('26-DEC-13', 'DD-MON-YY'); 
UPDATE dept SET EMP_ID = 106 WHERE JOB_ID = 15395 AND HIRE_DATE = TO_DATE('15-APR-12', 'DD-MON-YY'); 
UPDATE dept SET EMP_ID = 115 WHERE JOB_ID = 12254 AND HIRE_DATE = TO_DATE('14-NOV-14', 'DD-MON-YY'); 
UPDATE dept SET EMP_ID = 130 WHERE JOB_ID = 13696 AND HIRE_DATE = TO_DATE('17-FEB-11', 'DD-MON-YY'); 
UPDATE dept SET EMP_ID = 142 WHERE JOB_ID = 15395 AND HIRE_DATE = TO_DATE('23-JAN-13', 'DD-MON-YY'); 

只需確保EMP_ID在每個語句是希望之一。