【问题标题】:Combining Queries that require three tables SQL Query需要三张表的组合查询 SQL Query
【发布时间】:2015-12-27 13:58:55
【问题描述】:

我发现解决以下问题有点令人困惑......

" 一名员工可能被分配到多个项目,而一个项目可能有许多员工。考虑以下关系模式并为以下查询编写 SQL 语句。

Employees (empID, empName, empDOB, empAddress, salary, deptID, jobID)

Assignments (empID, projID, assignedDate, completionDate, status)`

Projects (projID, projDescription, startDate, endDate, projType)

(a) 显示 1980 年 1 月 31 日之前出生并分配了“办公综合体”类型项目的员工姓名,按姓名升序排列结果。

(b) 检索分配了至少两 (2) 个项目的 empID。 "

到目前为止我的回答。

(a)SELECT empName FROM EMPLOYEES WHERE empDOB < '31-january-1980' AND ....

"

请帮帮我

【问题讨论】:

标签: mysql sql database sorting


【解决方案1】:

试试这个: 一)

SELECT employee.empName
FROM Assignments ass 
   JOIN Employees employee
      ON employee .empID= ass.empID
   JOIN Projects  project
      ON project.projID= ass .projID
WHERE employee.empDOB < '31-january-1980' 
      AND project.projType = ‘Office Complex’
ORDER BY  employee.empName;

不使用JOIN CLAUSE

SELECT DISTINCT employee.empName
FROM Employees employee
WHERE employee.empDOB < '31-january-1980' 
      AND employee.empID  IN (
           SELECT ass.empID
           FROM Assignments ass
           WHERE ass.projID  IN (
                SELECT project.projID
                FROM  Projects project
                WHERE project.projType = ‘Office Complex’
           )
      )
ORDER BY  employee.empName ASC;

b)

SELECT ass.empID, COUNT(*) as counting 
FROM Assignments ass
GROUP BY ass.empID
HAVING COUNT(*) >= 2; 

【讨论】:

  • 谢谢,但你能告诉我.. (b) 检索分配了至少两 (2) 个项目的 empID。 "
  • 嘿,他们没问题,但没有办法在不使用 JOIN 的情况下做到这一点,我认为我的讲师不希望使用 JOIN 标签......
  • 我更新了我的解决方案。如果还可以,请不要犹豫给它评分。我希望它会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多