2017-05-30 19 views
0

我有三個表。 1. Emp,2.薪水,3. Commison。 EMP表有四列,即發現三個表的輸出

ID  Name  Gender department. 
101  Tarun  M  10 
102  Sahil  M  10 
103  Manju  F  10 
104  Dipika  F  10 
105  Parvinder M  20 
106  Akhilesh  M  20 
107  Shanti  F  20 
108  Shivani  F  30 
109  Bhuvan  M  30 
110  babita  F  30 

工資表有兩個列即

ID  Salary . 
101  3000 
102  5420 
103  8954 
104  10000 
105  8574 
106  9965 
107  9000 
108  7500 
109  9658 
110  9800 

Commison表有兩個柱即

ID Commission. 
101  2500 
104  2000 
107  3000 
109  5000 

輸出將被

ID名稱工資+ Commision

101塔倫5500
102薩赫勒5420 103饅頭8954
104 Dipika 12000
105 Parvinder 8574
106 Akhilesh 9965
107薩娜提12000
108 Shivani 7500
109 Bhuvan 14658 110巴比塔9800

+0

謝謝,但錯誤exixt 「LEFT JOIN Salary_new S於E.ID = S.ID第5行 * ERROR: ORA-00933:SQL命令不能正確地結束」 今天的 –

回答

1

您的查詢看起來是這樣的:

select e.id, e.name, s.salary + c.Commission as total 
from salary s, 
    Commission c, 
    emp e 
where e.id = s.id 
    and c.id = s.id 
+0

提示:切換到現代的,明確的' JOIN'語法。易於編寫(沒有錯誤),更易於閱讀(和維護),並且在需要時更容易轉換爲外部聯接。 – jarlh

+0

是的。但我更願意不使用'加入',至少簡單地加入表格。 – hamzox

+1

我曾經這樣做,但切換後,我永遠不會回去! – jarlh

0

假設我理解正確的話您的問題,您只需做到以下幾點:

SELECT 
E.ID 
,E.Name 
,S.Salary + C.Commission 
FROM Emp E 
LEFT JOIN Salary S on E.ID = S.ID 
LEFT JOIN Commission C on E.ID = C.ID 
+0

謝謝,但錯誤來了:「EEF上的LEFT JOIN Salary_new S = SID * 錯誤在第5行: ORA-00933:SQL命令未正確結束」 –

+0

您能否粘貼您嘗試執行的確切查詢? – Dekks

+0

1 SELECT 2 E.ID 3,S.Salary + C.Comm 4 FROM Emp_new E 5 LEFT JOIN Salary_new S E.ID 6 * LEFT JOIN Comm_new C on E.ID = C.ID 7/ LEFT JOIN Salary_new S on E.ID = S. ID * 錯誤在第5行: ORA-00933:SQL命令沒有正常結束 –

0
SELECT ID, Name, s.Salary + c.Commission AS Total FROM EMP e 
INNER JOIN Salary s ON e.ID = s.ID 
INNER JOIN Commison c ON s.ID = c.ID 
+0

內部連接只給出員工只有調用的結果 – Ravi

+0

感謝親愛的Vinoth的回覆,但錯誤來了「INNER JOIN Salary_new s ON e.ID = s.ID * 錯誤在第2行: ORA-00933:SQL命令未正確結束「 –

+0

SELECT E.ID,S.Salary + C.Comm FROM Emp_new E LEFT JOIN Salary_new S E.ID = S.ID在EID = C.ID上LEFT JOIN Comm_new C 10 LEFT JOIN Salary_new S E.ID * 錯誤在第5行: ORA-00933:SQL命令未正確結束 –

0

考慮到每一個員工都有自己的工資表項,

SELECT 
E.ID as ID 
,E.Name as Name 
,nvl(S.Salary,0) + nvl(C.Commission,0) as "Salary+Commision" 
FROM Emp E INNER JOIN Salary S on E.ID = S.ID 
LEFT JOIN Commission C on E.ID = C.ID 

如果您認爲他們可能是一些員工的記錄沒有載入薪水錶,但你希望他們在你的結果。

SELECT 
E.ID as ID,E.Name as Name,nvl(S.Salary,0) + nvl(C.Commission,0) as "Salary+Commision" 
FROM Emp E LEFT JOIN Salary S on E.ID = S.ID 
LEFT JOIN Commission C on E.ID = C.ID 

如果你不想寫「加盟」 -

SELECT 
E.ID as ID 
,E.Name as Name 
,nvl(S.Salary,0) + nvl(C.Commission,0) as "Salary+Commision" 
FROM Emp E ,Salary S,Commission C 
WHERE E.ID = S.ID(+) 
AND E.ID = C.ID(+) 

什麼可以做,但處理NULL值從佣金表來爲每一位員工將不會得到佣金。

+0

非常感謝親愛的Himanshu –