B1、B3、および B4 のパフォーマンス グレードを持つスタッフのスタッフ名、グレード、およびボーナスの値を表示するために、オラクルで不等結合を実行しようとしています。
SELECT Name, Grade, BonusPercent,
FROM STAFFING, STAFF BONUS, STAFF,
WHERE PerformanceGrade = B1, B3, B4;
運が悪く、エラーが発生し続けます。どんな助けでも大歓迎です。
繰り返しになりますが、発生しているエラーは、そこにあるべきではない末尾のコンマが原因です。
また、中央にスペースがあり、 1つの値を3つのコンマ区切り値と等しくすることはできないため、STAFF BONUS
は有効なテーブル名ではありません。この関数を使用する必要があります。これは、論理的に3つのORに相当します。in
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
ただし、これを十分に強調することはできません。このクエリが実際に必要なものになる可能性は最小限です。これにより、3つのテーブルすべてのデカルト積が得られます。つまり、すべてのスタッフに対して、すべてのボーナスが得られます。あなたが望むものではありません。
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)
あなたのテーブルがどのように見えるか私にはわからないので、これは明らかに完全に構成されていますが、あなたに一般的な考えを与えるはずです。