我制作了这些表格:
表1(职称)
JobTitleID | JobName
2432 Software Developer
3462 Data Designer
表2(发展)
SoftwareID | StaffID | JobTitleID
3337 2363 2432
4636 2363 2432
6676 2436 2432
3432 2363 2432
表3(工作人员)
StaffID | FirstName | Last Name
2363 John Smith
2436 Fraser Morgan
表4(软件)
SoftwareID | SoftwareName
3337 Iphone
4636 Android
6676 Windows
3432 Playstation
我希望能够列出具有Staff
工作的Software Developer
表的名称,以及从最小到最大的每个开发软件项目的数量。
这样的事情:
FirstName | LastName| Project Count
John Smith 3
Fraser Morgan 1
其他信息:
PK
的{{1}}和表格JobTitle
的{{1}}。PFK
的{{1}}和表格Development
的{{1}}。PK
的{{1}}和表格Staff
的{{1}}。PFK
,每个表格都强制要求强制连接到Development
的许多关系。 我一直在尝试这样的事情:
PK
有没有办法可以实现针对我的问题的查询工作?
任何肝脏都会受到赞赏。
答案 0 :(得分:1)
尝试使用以下内容:
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
答案 1 :(得分:1)
将count(*)
替换为count(distinct SoftwareID)
应该这样做。并且选择后的不同是不必要的
答案 2 :(得分: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;