2011-10-04 143 views
2

我分別有兩個表Table_Employee,Table_Department,我想選擇屬於員工的經理三次以上&也想顯示depatment名稱和它一起。SQL Query根據條件從兩個表中選擇多列

此任務必須在單個查詢中完成。這很容易嗎? 這裏是我的表格結構。

這裏Column_Empno將是Column_Manager,這意味着該表是自引用

Table_Employee 

Column_Empno  int 
Column_Fname  varchar(50) 
Column_Lname  varchar(50) 
Column_Job  varchar(50) 
Column_Manager int 
Column_HireDate date 
Column_Salary int 
Column_Commision int 
Column_DeptNo int 

Table_Department 

Column_DeptNo int 
Column_Dname  varchar(50) 
Column_Location varchar(50) 
+0

家庭作業?家庭作業 ! – wildplasser

+0

這是真正的模式嗎? varchar(50)'的姓氏聽起來太寬了,'Empno'可能是非數字的,'Table_Employee'確實太多了:人員詳細信息**和**工資單(但只有當前狀態值)**和**組織結構圖。 – onedaywhen

回答

4

經理+部門:

SELECT Column_Fname, Column_Lname, table_Department.Column_Dname 
FROM Table_Employee 
INNER JOIN table_Department ON Table_Employee.Column_DeptNo = table_Department.Column_DeptNo 

,或者你也可以這樣寫:

SELECT Column_Fname, Column_Lname, table_Department.Column_Dname 
FROM Table_Employee 
WHERE Table_Employee.Column_DeptNo = table_Department.Column_DeptNo 

它沒有測試。 順便說一句,爲什麼你給你的Colums「Column _...」命名,而不僅僅是「Fname」,「Lname」......和你的表「Table _....」,而不僅僅是「Employee」和「Department 「?

+0

該規範的「三倍以上」部分如何? – onedaywhen

+0

在第二個例子中你沒有提到表table_Department ... – MatBailie

+0

非常感謝您對於fase的回覆我對這個SQL及其操作非常陌生 – Jpaul

3
select 
    t1.column_manager, 
    t2.column_dname 
from 
(
    select column_manager, column_deptno = max(column_deptno) 
    from table_employee 
    group by column_manager 
    having count(*) > 3 
) t1 
join table_department t2 on t1.column_deptno = t2.column_deptno