2011-10-04 135 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