SQL查询问题

标签 sql database

考虑两个表。 Technician 表有 T_ID、T_Name 等字段。项目表包含 P_ID、P_Name、P_Date 等字段。

现在,由于一个技术人员可以从事多个项目,而一个项目可以由多个技术人员完成。因此,很明显,两个表之间存在多对多关系。打破多对多,并创建一个名为 Assignment 的新表,该表由外键 T_ID 和 P_ID 组成。

这里的问题是:我想找出特定技术人员的列表(T_ID = 1 的技术人员在上个月(2011 年 4 月)共事过。例如,如果技术人员 1 与技术人员 2 和 3 一起工作,则他们符合上述查询结果,我想要 tech 2 和 Tech 3 T_ID T_name。

答案也可以基于链接的两个查询。 请让我知道对上述问题的查询是什么。

最佳答案

这会找到所有与 ID = 10 的技术人员一起完成任务的人。也许:

SELECT t.T_ID, t.T_Name
FROM Technician t, Project p, Assignments a
WHERE t.T_ID = a.T_ID and p.P_ID = a.P_ID
and a.P_ID IN (SELECT assign.P_ID FROM Assignments assign, Projects proj WHERE assign.T_ID = 10 and assign.P_ID = proj.P_ID and (proj.P_Date - getdate() <= 30))

日期是一个猜测,因为我不确定语法,但其余的应该得到你想要的信息。

关于SQL查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5797725/

相关文章:

php - 我可以在数据库中保存信用卡密码吗?

php - 解析非英语字符时出错

mysql - 查询 MySQL 中至少一个子项满足约束 1 并且所有子项满足约束 2 的所有行

php - 使用连接比较sql查询中的两个表

sql - 如何有效地归档大型(多 GB)SQL Server 数据库的旧部分?

c# - 将值传递给表值参数时忽略标识列

database - PostgreSQL:无法连接到服务器 - 连接被拒绝错误

php - 基于浏览器的RPG : Using sessions to store player data

php - 将所有行回显到表中

sql - 如何获取sql server中两个日期之间的开始日期和结束日期