2014-07-23 38 views
-6

这个问题一直困扰着我的生活。考虑一下这个数字。带ER图的SQL查询练习

[Click here for Figure]

  1. 写SQL语句(s)表示,会发现每个项目的所有员工的平均小时。

  2. 编写SQL语句,其中列出雇员编号为1251的雇员与任务有关的所有项目,但不作为经理。

这是我..

查询1:

SELECT AVG(ASSIGN_HOURS) 
FROM ASSIGNMENT a, PROJECT P 
WHERE p.EMP_NUM=a.EMP_NUM; 

查询2:

SELECT * 
FROM PROJECT P, ASSIGNMENT A 
WHERE P.EMP_NUM<>1251 
    AND A.EMP_NUM=1251; 

请帮帮忙!

+0

什么是你的做法?到目前为止,你有什么? – Timo

+1

这是一项任务,但不是一个问题。在处理任务时,你的问题是什么? –

+0

选择AVG(ASSIGN_HOURS)FROM ASSIGNMENT a,PROJECT P WHERE p.EMP_NUM = a.EMP_NUM; 1 – leah

回答

1

以下是将解决您的目的的查询。

查询1

SELECT prj.proj_num 
    ,asg.emp_num 
    ,avg(asg.assign_hours) 
FROM Project prj 
INNER JOIN Assignment asg 
    ON prj.proj_num = asg.proj_num 
GROUP BY prj.proj_num 
    ,asg.emp_num 

SQL FIDDLE FOR FIRST QUERY

查询2

SELECT prj.proj_num 
     ,prj.proj_name 
     ,asg.* 
FROM Project prj 
INNER JOIN Assignment asg 
    ON prj.proj_num = asg.proj_num 
WHERE asg.emp_num = 1251 
    and prj.emp_num <> 1251 

SQL FIDDLE FOR SECOND QUERY

假设根据您的意见做 - 在计划表中emp_num列将有经理emp_num。

注:测试和工程

+0

+1我将与这个答案一起走 – MarmiK

+0

@MarmiK谢谢,我正在学习SQL,你提高了我的信心! – Murtaza

+0

我刚刚重新格式化了您的答案,使其成为利基。 :)虽然欢迎。 – MarmiK