2014-03-12 65 views
0

所以我有兩個表名爲Emp和部門..子查詢在SQL中返回多於1行?

  • 的Emp已經爲ssn,姓名,supssn,工資,depno
  • 部門有DNO,名稱,mgrssn

我應該得到那些比他的一些員工少的經理人的名字

現在我有:

SELECT DISTINCT Emp.name 
FROM Emp CROSS JOIN Dept 
WHERE ((SELECT Emp.salary 
    FROM Emp, Dept)>(SELECT Emp.salary 
        FROM Emp, Dept 
        WHERE(Emp.name IN (SELECT Emp.name 
             FROM Emp CROSS JOIN Dept 
             WHERE ssn = mgrssn)))) AND (SELECT Emp.depno 
                    FROM Emp, Dept)=(SELECT Emp.depno 
                           FROM Emp, Dept 
        WHERE(Emp.name IN (SELECT Emp.name 
             FROM Emp CROSS JOIN Dept 
             WHERE ssn = mgrssn))); 

我究竟錯過了什麼或者現在增加了多少?

+0

我只是不明白你的問題。 – Madhawas

+0

用戶想要獲得那些經理人員的名字,而且他們的收入低於他/她的員工。 –

+0

沒有數據結構和關係,沒有人可以假設表是如何相互關聯的。我沒有足夠的關於mysql的知識,但是你可以通過在sql server中使用Top 1和在我的sql中使用LIMIT 1來避免你的錯誤。 – 2014-03-12 06:01:45

回答

0

你真的需要耐心和整理你的問題,先生.. 但如果我理解正確的話,您可以嘗試這個.. (我假設supssn是管理者的SSN)

SELECT DISTINCT sup.name 
FROM emp e join emp sup on e.supssn = sup.ssn 
WHERE sup.salary < e.salary