0

次の SQL クエリで構文エラーが発生する理由がわかりません。

クエリ (および後述のスキーマ/作成済みビュー) の目的は、すべてのマネージャーの平均給与よりも多くの収入を得ているマネージャーの名前と会社名を見つけることです。

これが私が書いたクエリとそれに付随するエラーです:

select ManagerLastname, MFirstName, MMidInitial, company_name
  from ManagerInfo, Works
    (select avg(salary) as AverageManagerSalary, Lastname
     from Works,
     group by Lastname) Work1
where ManagerInfo.ManagerLastname = Work1.Lastname and
Works.salary > Work1.AverageManagerSalary;

ORA-00933: SQL command not properly ended : select ManagerLastname, MFirstName, MMidInitial, company_name from ManagerInfo, Works (select avg(salary) as AverageManagerSalary, Lastname from Works, group by Lastname) Work1 where ManagerInfo.ManagerLastname = Work1.Lastname and Works.salary > Work1.AverageManagerSalary

このクエリのどこに構文エラーがあるのか​​わかりません。かっこと「句読点」はすべて正しいと思ったので、ネストされたselectステートメントの問題だと思いますが、そのステートメント内で何を変更する必要があるかわかりません...

これが私のデータベースの全体的なスキーマです。このスキーマと私が作成した上記のビューは正しく「コンパイル」されるため、エラーはクエリ コード自体に関係していることがわかります。

create table Employee(
    Lastname    varchar(10),
    FirstName   varchar(10),
    MidInitial  char(1),
    gender      char(1),
    street      varchar(10),
    city        varchar(10),
    primary key(Lastname, FirstName, MidInitial));

create table company(
    company_name    varchar(20),
    city    varchar(10),
    primary key(company_name));

create table Works(
    Lastname    varchar(10),
    FirstName   varchar(10),
    MidInitial  char(1),
    company_name    varchar(20),
    salary      numeric(8,2),
    primary key(Lastname, FirstName, MidInitial, company_name),
    foreign key(Lastname, FirstName, MidInitial) references Employee,
    foreign key(company_name) references company);

create table Manages(
    Lastname    varchar(10),
    FirstName   varchar(10),
    MidInitial  char(1),
    ManagerLastname varchar(10),
    MFirstName  varchar(10),
    MMidInitial char(1),
    start_date  date,
    primary key(Lastname, FirstName, MidInitial, ManagerLastname, MFirstName, MMidInitial),
    foreign key(Lastname, FirstName, MidInitial) references Employee);

create view ManagerInfo as
  (select distinct ManagerLastname, MFirstName, MMidInitial, street, city
   from Manages, Employee
   where Manages.ManagerLastname = Employee.Lastname and
  Manages.MFirstName = Employee.FirstName and
  Manages.MMidInitial = Employee.MidInitial);

ちなみに、SQL for Oracle 11g R2 を使っています。

ご協力いただきありがとうございます。とても有難い。

4

1 に答える 1

1

from 句の Works の後にカンマがありませんか? (最初のもの)次に、副選択の Works の後に余分なコンマがあるようです。

于 2013-09-22T02:29:56.350 に答える