Sql 无法编写此查询,正在尝试使用内部联接
我的数据库:Sql 无法编写此查询,正在尝试使用内部联接,sql,database,select,inner-join,Sql,Database,Select,Inner Join,我的数据库: EMPLOYEE (fmane, minit, lname, ssn, birthdate, address, sex, salary, superssn, dno) KEY: ssn DEPARTMENT (dname, dnumber, mgrssn, mgrstartdate) KEY: dnumber. PROJECT (pname, pnumber, plocation, dnum)
EMPLOYEE (fmane, 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.*
FROM Employee AS E INNER JOIN Dependent AS D
ON ( E.ssn = D.essn AND D.relationship IN ( 'husband','wife') )
不管怎么说,你想给我修改代码吗?我想使用内部联接来查找所需内容。编辑:另一种不使用减号的方法
select e.lname from
employee e inner join dependent d
on e.ssn=d.essn
where D.relationship IN ('husband','wife')
and e.ssn not in (
select e.ssn from
employee e inner join dependent d
on e.ssn=d.essn
where D.relationship IN ('child')
)
带负号
SELECT e.lname
FROM Employee E
INNER JOIN Dependent D
ON E.ssn = D.essn
where D.relationship IN ('husband','wife')
minus
select e.lname
FROM Employee E
INNER JOIN Dependent D
ON E.ssn = D.essn
where D.relationship IN ('child') --or children what ever you are using
编辑:不使用减号的另一种方式
select e.lname from
employee e inner join dependent d
on e.ssn=d.essn
where D.relationship IN ('husband','wife')
and e.ssn not in (
select e.ssn from
employee e inner join dependent d
on e.ssn=d.essn
where D.relationship IN ('child')
)
带负号
SELECT e.lname
FROM Employee E
INNER JOIN Dependent D
ON E.ssn = D.essn
where D.relationship IN ('husband','wife')
minus
select e.lname
FROM Employee E
INNER JOIN Dependent D
ON E.ssn = D.essn
where D.relationship IN ('child') --or children what ever you are using
尝试以下方法。内部查询查找只有一个受抚养人的所有员工,可以是配偶或其他家庭成员。然后,我将这个结果再次加入到
Dependent
表中,并将其他家庭成员限制为丈夫或妻子
SELECT e1.*
FROM Employee e1 INNER JOIN
(
SELECT e2.ssn
FROM Employee e2 INNER JOIN Dependent d1 ON e2.ssn = d1.essn
GROUP BY e2.ssn
HAVING COUNT(*) = 1
) t ON e1.ssn = t.ssn
INNER JOIN Dependent d2 ON e1.ssn = d2.essn
WHERE d2.relationship IN ('husband', 'wife')
尝试以下方法。内部查询查找只有一个受抚养人的所有员工,可以是配偶或其他家庭成员。然后,我将这个结果再次加入到
Dependent
表中,并将其他家庭成员限制为丈夫或妻子
SELECT e1.*
FROM Employee e1 INNER JOIN
(
SELECT e2.ssn
FROM Employee e2 INNER JOIN Dependent d1 ON e2.ssn = d1.essn
GROUP BY e2.ssn
HAVING COUNT(*) = 1
) t ON e1.ssn = t.ssn
INNER JOIN Dependent d2 ON e1.ssn = d2.essn
WHERE d2.relationship IN ('husband', 'wife')
是的。我现在看到了。正在更正。
减号是非标准SQL。ANSI SQL等价物是除了谢谢!尝试了另一种方法使用不在
我可以在e.ssn=d.essn上问一下吗,是加入empolyee的从属关系吗?是找到生日吗?只是加入基于公共密钥的员工和从属关系。如果要显示生日
或员工
表中的任何其他列,可以在外部选择查询中使用它们。或者使用外部选择中的e.*
获取所有列。是。我现在看到了。正在更正。减号是非标准SQL。ANSI SQL等价物是除了谢谢!尝试了另一种方法使用不在
我可以在e.ssn=d.essn上问一下吗,是加入empolyee的从属关系吗?是找到生日吗?只是加入基于公共密钥的员工和从属关系。如果要显示生日
或员工
表中的任何其他列,可以在外部选择查询中使用它们。或者使用outer select中的e.*
获取所有列。感谢您输入到目前为止所做的尝试,但是了解表中的一些示例数据/您的预期输出以及您使用的数据库名称/版本会非常有帮助?博士后?Oracle?请查看下面给出的答案,谢谢。感谢您提供您迄今为止所做的尝试,但了解表中的一些示例数据/您的预期输出以及数据库名称/版本确实会有所帮助。您使用的是哪种DBMS?博士后?Oracle?请查看下面给出的答案,谢谢。