3

私はSQLを初めて使用し、今学期はDBクラスを受講しています。このデータベースで試すクエリは約20ありますが、そのうちの2つは理解できません...ここの誰かが助けてくれるかどうか疑問に思いました。

これが私がすでに作成した私のテーブルです。

create table employee(
  EID varchar(20) primary key,
  Lastname varchar(20),
  Firstname varchar(20),
  Midinitial char(1),
  gender char(1),
  street varchar(20),
  city varchar(20)
);

create table works(
  EID varchar(20) primary key,
  Lastname varchar(20),
  Firstname varchar(20),
  Midinitial char(1),
  company_name varchar(20),
  salary numeric(5,0),
  foreign key(EID) references employee,
  foreign key(company_name) references company
);

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

create table manages(
  EID varchar(20) primary key,
  Lastname varchar(20),
  Firstname varchar(20),
  Midinitial char(1),
  ManagerLastname varchar(20),
  MFirstname varchar(20),
  MMidinitial varchar(20),
  start_date date,
  foreign key (EID) references employee
);

First Bankで働き、オマハに住むすべてのマネージャーの給与を検索します。

これが私がこれについて持っているものです。私はそれが正しいと思いますが、私も2番目のものを手に入れることができるまでこれに答えたくありません...。

select distinct salary
from employee, works, manages
where employee.city = 'Omaha' 
  and works.company_name = 'First Bank' 
  and manages.managerlastname = employee.Lastname
  and employee.EID = works.EID

全従業員の中で最も給与が高い従業員の名前と会社名を見つけます。

4

3 に答える 3

2

私はそれがそうあるべきだと確信しています:

SELECT w.salary FROM works w INNER JOIN employee e ON w.EID = e.EID
 WHERE e.city = 'Omaha' AND w.company_name = 'First Bank' AND EXISTS
 ( SELECT * FROM managers m WHERE m.EID = w.EID);

そして2番目に:

SELECT e.Firstname, e.Lastname, w.company_name FROM employee e INNER JOIN
  works w ON e.EID = w.EID ORDER BY w.salary DESC LIMIT 1;
于 2012-09-11T03:54:24.300 に答える
1
SELECT w.salary
FROM works w
INNER JOIN employee e
    ON e.EID = w.EID
        AND e.city = 'Omaha'
WHERE w.company_name = 'First Bank';

それでいいはずです。

于 2012-09-11T03:38:20.827 に答える
0

これらはどちらも、テーブルの情報から必要なものを正確に返しました。助けてくれてありがとう!

クエリ 1

select distinct salary
from employee, works, manages
where employee.city = 'Omaha' 
  and works.company_name = 'First Bank' 
  and manages.managerlastname = employee.Lastname
  and employee.EID = works.EID

クエリ 2

select firstname, lastname, company_name
from works w1, (select max(salary) as max_salary
            from works) w2
where w1.salary = w2.max_salary
于 2012-09-11T20:38:02.557 に答える