Mysql 列出员工项目

Mysql 列出员工项目,mysql,sql,Mysql,Sql,我制作了以下表格: 表1(职位名称) 表2(发展) 表3(工作人员) 表4(软件) 我希望能够列出担任软件开发人员工作的员工的姓名,以及他们每个人完成了多少开发软件项目,顺序从最小到最大 大概是这样的: FirstName | LastName| Project Count John Smith 3 Fraser Morgan 1 SELECT DISTINCT FirstName, LastName, COUNT(*) AS numProjects

我制作了以下表格:

表1(职位名称)

表2(发展)

表3(工作人员)

表4(软件)

我希望能够列出担任
软件开发人员
工作的
员工的姓名,以及他们每个人完成了多少开发软件项目,顺序从最小到最大

大概是这样的:

FirstName | LastName| Project Count
John       Smith      3
Fraser     Morgan     1
SELECT DISTINCT FirstName, LastName, COUNT(*) AS numProjects
    FROM Staff
        INNER JOIN Development ON Staff.StaffID = Development.StaffID
            INNER JOIN JobTitle ON Development.JobTitleID = JobTitle.JobTitleID
                WHERE JobName = 'Software Developer'
                    GROUP BY FirstName, LastName;
其他信息:

  • JobTitleID是表
    JobTitle
    PK
    和表
    Development
    PFK
  • StaffID是表
    Staff
    PK
    和表
    Development
    PFK
  • SoftwareID是表
    Software
    PK
    和表
    Development
    PFK
  • 这三个表:
    职务、软件、员工
    ,每个表都具有与
    开发
    相关的一对多关系
我一直在尝试这样的事情:

FirstName | LastName| Project Count
John       Smith      3
Fraser     Morgan     1
SELECT DISTINCT FirstName, LastName, COUNT(*) AS numProjects
    FROM Staff
        INNER JOIN Development ON Staff.StaffID = Development.StaffID
            INNER JOIN JobTitle ON Development.JobTitleID = JobTitle.JobTitleID
                WHERE JobName = 'Software Developer'
                    GROUP BY FirstName, LastName;
是否有一种方法可以实现查询工作,从而解决我的问题

任何hep都将不胜感激。

尝试使用以下选项:

SELECT DISTINCT Staff.FirstName, Staff.LastName, COUNT(Development.StaffID) AS numProjects
  FROM Staff
     INNER JOIN Development ON Staff.StaffID = Development.StaffID
        INNER JOIN JobTitle ON Development.JobTitleID = JobTitle.JobTitleID
           WHERE JobTitle.JobName = 'Software Developer'
              GROUP BY FirstName, LastName
输出:

FirstName - LastName - numProjects
  John    -  Smith   -     3
  Fraser  -  Morgan  -     1
count(*)
替换为
count(不同的软件ID)
应该可以。而且不需要在选择后使用distinct键

请尝试以下操作:

 SELECT FirstName, LastName,
 COUNT(*) AS numProjects 
 FROM Staff, Development, JobTitle
 WHERE JobName = 'Software Developer' 
 AND Staff.StaffID = Development.StaffID 
 AND Development.JobTitleID = JobTitle.JobTitleID 
 GROUP BY StaffID;
FirstName - LastName - numProjects
  John    -  Smith   -     3
  Fraser  -  Morgan  -     1
 SELECT FirstName, LastName,
 COUNT(*) AS numProjects 
 FROM Staff, Development, JobTitle
 WHERE JobName = 'Software Developer' 
 AND Staff.StaffID = Development.StaffID 
 AND Development.JobTitleID = JobTitle.JobTitleID 
 GROUP BY StaffID;