0

私はこのスキーマを与えられています:

Emp(eid: integer,ename: string,age: integer,salary: real)
Works(eid:integer,did: integer,pct_time: integer)
Dept(did:integer,budget: real,managerid:integer)

何をする必要があるかを概念化するのに苦労しています。すべての managerid のリストを取得してから、どうにかして eid に対するサブクエリで IN を使用することを考えていますが、それを行う方法がわかりません。

4

2 に答える 2

0
select Works.eid 
from Works inner join Dept using (did)
where Works.eid != Dept.managerid 
  and Works.eid in (select managerid as eid from Dept)
于 2013-03-14T23:11:30.663 に答える
0

1 つ情報がありません。マネージャーの Works 行はありますか? あると仮定した。

Select d1.managerid
From Dept as d1
Where Exists 
(Select 1 from Works 
 Join Dept as d2 using (did)
 Where Works.eid = d1.managerid 
 And Works.eid != d2.managerid)

「in」より「exists」の方がいいと思います。

返されたマネージャーの完全な情報が必要な場合は、メイン クエリに結合 Emp を追加する必要があります。

于 2013-03-14T23:24:53.973 に答える