2017-03-17 22 views
0

enter image description here我不知道如何列出僱員的名字,姓氏,ssn,以及依賴者的名字和關係,如果一個依賴者存在。我需要使用顯式連接來列出所有有家屬的員工,包括沒有家屬的員工。使用MySQL和公司架構

架構名稱:公司

表名:員工

列名:FNAME,MINIT,LNAME,SSN,bdate,地址,性別,工資,superssn,DNO

表名:從屬

列名稱:essn,dependent_name,sex,bdate,relationship

表名: dept_locations;

列名:dnumber,dlocation

表名:部門

列名:dnumber,DNAME,mgrssn,mgrstartdate

表名:項目

列名:pname,pnumber,plocation,dnum

表名: works_on

列名:ESSN,PNO,小時

這是我有什麼,但它不工作...所以任何建議將是巨大的感謝!

SELECT a.fname, a.lname, a.ssn, b.dependent_name, b.relationship 
FROM `employee` a 
inner JOIN `dependent` b 
WHERE a.bdate=b.bdate; 
+0

你爲什麼要比較僱員和受撫養人的生日? – Barmar

+0

除了'employee'和'dependent'這兩個表之外,哪些表格與這個問題有關? – Barmar

+0

我不確定要比較什麼來得到這個結果集。我是新來的sql。我應該比較什麼? – tadashi

回答

0

您的查詢查找具有與受撫養人相同出生日期的僱員。這只是一個偶然的巧合,並不意味着它們有任何關係。

您應該根據員工的SSN加入表格。我假設dependent中的essn列是他們所依賴的員工的SSN。

此外,加入條件應該放在ON子句中,而不是WHERE(儘管MySQL不強制執行此操作)。

SELECT a.fname, a.lname, a.ssn, b.dependent_name, b.relationship 
FROM employee AS a 
JOIN dependent AS b ON b.essn = a.ssn 
0

巴爾馬建議的東西非常正確......只是缺少一件事。 OP需要列出具有受撫養人的僱員,並且沒有受撫養人,所以應該使用左加入

select a.fname, a.lname, a.ssn, b.dependent_name, b.relationship 
    from employee a 
    left join dependent b 
    on b.essn = a.ssn;