Tsql 选择仅在同一城市执行项目的人员

Tsql 选择仅在同一城市执行项目的人员,tsql,Tsql,所以我有3个表:管理(…,personID,projectID//personID和projectID可以复制)项目(id,city,…)和个人(id,name,city,…) 我需要输出那些只在同一个城市做项目的人。 如果您有任何帮助或想法,我们将不胜感激。这里是一个简单的查询,其中包含连接、分组方式、have和count(distinct),可以获得所需的结果 首先,创建并填充示例表(请在以后的问题中保存此步骤): 查询: SELECT personId, firstName, lastNa

所以我有3个表:管理(…,personID,projectID//personID和projectID可以复制)项目(id,city,…)和个人(id,name,city,…) 我需要输出那些只在同一个城市做项目的人。
如果您有任何帮助或想法,我们将不胜感激。

这里是一个简单的查询,其中包含连接、分组方式、have和count(distinct),可以获得所需的结果

首先,创建并填充示例表(请在以后的问题中保存此步骤):

查询:

SELECT personId, firstName, lastName, max(city) as city
FROM @Person As pe
JOIN @Managment As m
    ON pe.Id = m.personId
JOIN @Project As pr
    ON pr.Id = m.projectId
GROUP BY personId, firstName, lastName
HAVING COUNT(DISTINCT city) = 1
(我添加了城市名称作为奖励,如果你想要两个城市,你可以选择
max
min
,而不仅仅是你不能选择的)-注意
having
子句中
count(distinct city)
的用法

结果:

personId    firstName   lastName    city
3           Abbie       Cornish     Albuquerque
4           Ace         Young       Alexandria

请说得更具体些。这个问题是关于SQL的吗?是的,我认为“tsql”就足够了。对不起,错过了标签-在你的问题中重复上下文总是一个好主意。也就是说,这不是一个非常精确的问题。一个人单独在一个城市的项目上工作是结果的一部分,还是结果中只需要几个人(复数)。没有人参与的项目怎么样?我想你需要更准确地表达。哦,对不起。所以几乎所有的东西都在主表管理中,我们在那里放了projectd和PersonID(不是null,不是唯一的)和其他细节,所以每个项目都有一个人,通常是1个人,每个人都可以有很多项目。在equal tables Project和Person中只有姓名和城市,这些表格非常简单。主要目标是输出该personsID,该personsID与项目表中的城市(每个项目也有一个城市)在同一个城市的内部人员表(on Management.personsID=personsID)中只有一个项目**对不起,我的英语不好(我了解你的关系。但是不清楚你是搜索一个特定的项目还是想要一个所有项目的列表。也不清楚你想要的结果是什么。你是在寻找一个只返回多行的sql查询,还是需要一些代码来处理每个项目和城市的人员。
personId    firstName   lastName    city
3           Abbie       Cornish     Albuquerque
4           Ace         Young       Alexandria