0
以下SQL查询的目标是为每位居住在圣弗朗或洛杉矶的女性经理返回姓名和薪水。我很困惑,为什么这个问题要回归男性经理和女性经理......我原本以为定义约束“性别='F'”以及自然连接会消除所有男性经理列表马上。不产生正确结果的SQL查询
select Lastname, FirstName, MidInitial, salary, gender
from Employee natural join Works natural join Manages
where Lastname = ManagerLastname and
FirstName = MFirstName and
MidInitial = MMidInitial and
gender = 'F' and
city = 'San Fran' or city = 'LA';
--RESULT:
LASTNAME FIRSTNAME MIDINITIAL SALARY GENDER
Brandy Dan L 42000 M
Clemson Ann M 39000 F
Gill Mary L 48700 F
Simon Eric K 45000 M
有谁看到什么内在的错误上面的查询? FYI:这里是该数据库的表的模式:
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);
此外,我使用SQL对的Oracle 11g R2。
谢谢你看看这个!
,尝试按你的条件'姓= ManagerLastname和 名字= MFirstName和 MidInitial = MMidInitial和 gender ='F'and (city ='San Fran'or city ='LA')''或者不使用'OR'使用'IN'例如'Las tname = ManagerLastname和 FirstName = MFirstName和 MidInitial = MMidInitial和 gender ='F'和 city =('San Fran','LA')' –