1

私の目標は、San Fran と LA の両方に従業員が住んでいる会社の名前のリストを返すことです。これまでのクエリとスキーマを次に示します。

select distinct company_name
  from Works natural join Employee
where city = 'San Fran' or city = 'LA';

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 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);

現在、私のクエリは、従業員が San Fran または LA、またはその両方に住んでいるすべての企業のリストを返していることを理解しています... where で AND と OR の両方を使用するにはどうすればよいでしょうか両方の都市に従業員が住んでいる会社のみを取得するための句は?

ありがとう!

4

2 に答える 2

2

必要なのは、これら 2 つのサブセットの自然な交差です。これを達成するためのSQLは次のとおりです:)

select distinct company_name
  from Works natural join Employee
where city = 'San Fran';
intersect
select distinct company_name
  from Works natural join Employee
where city = 'LA';
于 2013-09-18T11:56:29.003 に答える
1
select distinct company_name
from Works natural join Employee
where city = 'San Fran'
and company_name in 
(
    select company_name
    from Works w natural join Employee e
    where city = 'LA'
    group by company_name
)

これはうまくいくかもしれません。

于 2013-09-18T11:46:30.817 に答える