簡體   English   中英

卡在編寫此查詢,試圖使用內部聯接

[英]stuck on writing this query, trying to use 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)                          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

請嘗試以下方法。 內部查詢查找只有一個受撫養人的所有雇員,這些雇員可以是配偶另一位家庭成員。 然后,我將這個結果再次加入到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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM