卡在这个命令循环中,试图得到这个查询命令的正确答案
stuck at this command loop, trying to get right answer for this query commands
EMPLOYEE (fname, minit, lname, ssn, birthdate, address, sex, salary, superssn, dno) KEY: ssn
DEPARTMENT (dname, dnumber, mgrssn, mgrstartdate) KEY: dnumber.
PROJECT (pname, pnumber, plocation, dnum) KEY: pnumber.
WORKS_ON (essn, pno, hours) KEY: (essn, pno)
DEPENDENT (essn, dependent-name, sex, bdate, relationship) KEY: (essn, dependent-name)
基本上我想得到每个没有家属的女经理的名字、姓氏和社会保障。
这是我到目前为止写的:
select e.fname, e.lname, e.ssn
from employee e, department d
where d.mgrssn = e.ssn
and e.sex = 'f'
and not exist in (
select *
?
)
我基本上卡在了循环中的 select 语句,它里面应该有什么?
也许您可以使用 NOT IN 而不是 EXISTS:
SELECT e.fname, e.lname, e.ssn
FROM employee e, department d
WHERE d.mgrssn = e.ssn
AND e.sex = 'f'
AND e.ssn not in (
SELECT essn
FROM dependant
)
希望对您有所帮助!
当您 select 一位女经理的家属时,您希望没有任何行。所以写一个select,returnse.essn的家属,嵌套在NOT EXISTS (
)
里面。或者,当您 select 所有家属的 ssns 时,您希望没有 e.essn。所以写一个 select 那 returns dependents' essns 并将其嵌套在 e.ssn NOT IN
(
)`.
PS:没有循环! select 语句的 FROM 子句创建一个 table,其中包含来自两个 table 和列名称 table 的行的所有可能组合。 =17=]列。 (您可以省略 table。如果 column 是唯一的。)然后它只保留满足 WHERE 的行。那么你必须去掉 SELECT 子句中重复的 _column_s。
EMPLOYEE (fname, minit, lname, ssn, birthdate, address, sex, salary, superssn, dno) KEY: ssn
DEPARTMENT (dname, dnumber, mgrssn, mgrstartdate) KEY: dnumber.
PROJECT (pname, pnumber, plocation, dnum) KEY: pnumber.
WORKS_ON (essn, pno, hours) KEY: (essn, pno)
DEPENDENT (essn, dependent-name, sex, bdate, relationship) KEY: (essn, dependent-name)
基本上我想得到每个没有家属的女经理的名字、姓氏和社会保障。
这是我到目前为止写的:
select e.fname, e.lname, e.ssn
from employee e, department d
where d.mgrssn = e.ssn
and e.sex = 'f'
and not exist in (
select *
?
)
我基本上卡在了循环中的 select 语句,它里面应该有什么?
也许您可以使用 NOT IN 而不是 EXISTS:
SELECT e.fname, e.lname, e.ssn
FROM employee e, department d
WHERE d.mgrssn = e.ssn
AND e.sex = 'f'
AND e.ssn not in (
SELECT essn
FROM dependant
)
希望对您有所帮助!
当您 select 一位女经理的家属时,您希望没有任何行。所以写一个select,returnse.essn的家属,嵌套在NOT EXISTS (
)
里面。或者,当您 select 所有家属的 ssns 时,您希望没有 e.essn。所以写一个 select 那 returns dependents' essns 并将其嵌套在 e.ssn NOT IN
()`.
PS:没有循环! select 语句的 FROM 子句创建一个 table,其中包含来自两个 table 和列名称 table 的行的所有可能组合。 =17=]列。 (您可以省略 table。如果 column 是唯一的。)然后它只保留满足 WHERE 的行。那么你必须去掉 SELECT 子句中重复的 _column_s。