Once again你正在得到的錯誤是因爲一個尾隨的逗號不應該在那裏。
此外,STAFF BONUS
是不有效的表名稱,因爲在中間和一個值的空間不能等於三個逗號分隔的值。您需要使用in
函數,這是3個OR的邏輯等價物。
SELECT Name, Grade, BonusPercent -- NO TRAILING COMMA
FROM STAFFING, STAFF_BONUS, STAFF -- NO TRAILING COMMA, NO SPACE IN TABLE NAME
WHERE PerformanceGrade in (B1, B3, B4) -- USE IN
然而,我不能強調這足夠強烈,這個查詢是真正你想要的是最小的機會。這將爲您提供所有三張表中的Cartesian product,即爲您獲得每筆獎金的每位員工。不是你想要的。
這是更正常的JOIN
表一起使用一個共同的列。例如
select staff.name, staff.grade, staff_bonus.bonuspercent
from staffing
join staff
on staffing.id = staff.staffing_id
join staff_bonus
on staff_bonus.id = staff.bonus_id
where PerformanceGrade in (B1, B3, B4)
這顯然是完全由我不知道你的表像,但應該給你一個總體思路。
我強烈建議您閱讀joins和basic SQL syntax。
來源
2012-08-05 10:51:20
Ben
再次,您的**表之間沒有連接**。你有沒有打擾閱讀手冊? http://docs.oracle.com/cd/E11882_01/server.112/e26088/queries006.htm#i2054012 – 2012-08-05 10:34:21
看着你的問題,你似乎並沒有掌握'join'的基本知識......我會高度評價建議學習select語句的基礎知識。 – Ben 2012-08-05 10:42:22
@jeremy你一直在問的問題是非常基本的。在開始發佈SO中的一堆問題之前,您應該開始學習Oracle基礎知識。這裏是一個簡短的教程,將向您展示基礎知識http://www.mathcs.emory.edu/~cheung/Courses/377/Others/tutorial.pdf – Annjawn 2012-08-05 16:55:24